Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对同时包含浮点数和字符串的列表值中的浮点数执行操作_Python_Python 3.x_Dictionary - Fatal编程技术网

Python 对同时包含浮点数和字符串的列表值中的浮点数执行操作

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

我有一个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]
添加到列表中

只需对代码进行最小的修改 输出:

{'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()的工作原理。谢谢