Python 对同时包含浮点数和字符串的列表值中的浮点数执行操作
我有一个Python 3中的字典,其中所有键值对都具有以下结构:Python 对同时包含浮点数和字符串的列表值中的浮点数执行操作,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有一个Python 3中的字典,其中所有键值对都具有以下结构: my_dict = {'Jerry': [0.4, 'Queens', 0.6, 'Knicks']} 这意味着该值始终是一个带有float、string、float、string的列表 我需要修改这些值,以便将两个浮点值平均,并且新字典如下所示: new_dict = {'Jerry': [0.5, 'Queens', 'Knicks]} 我尝试了一个for循环,该循环根据浮点值的索引从值列表中选择浮点值,但Python
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]
添加到列表中
只需对代码进行最小的修改
输出:
{'Jerry': [0.5, 'Queens', 'Knicks']}
{'Jerry': [0.5, 'Queens', 'Knicks'], 'Berry': [0.3, 'Queens', 'Knicks']}
还是一个较短的解决方案
输出:
{'Jerry': [0.5, 'Queens', 'Knicks']}
{'Jerry': [0.5, 'Queens', 'Knicks'], 'Berry': [0.3, 'Queens', 'Knicks']}
迭代通过
键
,值
对,并创建一个临时列表来存储数字和字符串数据,迭代每个值列表并根据类型
将其附加到字符串
列表中,最后找到平均值
,并将其添加到结果字典中
my_dict={'Jerry':[0.4'皇后区',0.6'尼克斯']
结果={}
对于键,my_dict.items()中的值:
数字=[]
字符串=[]
对于有价值的项目:
如果类型(项目)为浮动:
编号。追加(项目)
其他:
strings.append(项)
结果[键]=[和(数)/len(数)]+字符串
输出:
{'Jerry':[0.5,'Queens','Knicks']}
PS:即使给定词典的值列表中的项数或多或少,此解决方案也会起作用。的第一个参数应采用iterable(例如,列表)
您可以按照建议使用
average=sum([v[0],v[2]])/2
,也可以只使用average=(v[0]+v[2])/2
,不要重新分配到当前循环的词典-可能会发生有趣的事情。而是创建一个新词典。e、 g.my_dict={k:[(v[0]+v[2])/2,v[1],v[3]]for k,v在my_dict.items()中
“您需要将一个iterable传递给sum()函数,因此通过添加一个[and]“这是非常有价值的信息,肯定是我缺少的。”。这有助于我更好地理解sum()的工作原理。谢谢