我有一个Python 3中的字典,其中所有键值对都具有以下结构:
my_dict = {'Jerry': [0.4, 'Queens', 0.6, 'Knicks']}
这意味着该值始终是一个带有float、string、float、string的列表
我需要修改这些值,以便将两个浮点值平均,并且新字典如下所示:
new_dict = {'Jerry': [0.5, 'Queens', 'Knicks]}
我尝试了一个for
循环,该循环根据浮点值的索引从值列表中选择浮点值,但Python不允许我对其进行索引
for k, v in my_dict.items():
average = sum(v[0], v[1])/2
my_dict[k] = [average, v[1], v[3]]
这是回报
TypeError: 'float' object is not iterable
我如何选择浮动来计算平均值
您需要将
iterable
传递给sum()
函数,因此通过添加[
和]
将值v[0]
和v[1]
添加到列表中只需对代码进行最小的修改
输出:
还是一个较短的解决方案
输出:
^{} 的第一个参数应该是一个iterable(例如,一个列表)
您可以按照@abhi-j的建议使用
average = sum([v[0], v[2]])/2
,也可以只使用average = (v[0]+v[2])/2
迭代
key
、value
对,创建一个临时列表来存储数字和字符串数据,迭代每个值列表并基于type
附加到numbers
/strings
列表,最后找到average
并将其添加到结果字典中输出:
PS:即使给定词典的值列表中的项数或多或少,此解决方案也会起作用
相关问题 更多 >
编程相关推荐