如何通过返回汇总的值来更新字典中的值?
How do I update the values inside a dictionary by returning the values summed up?
在这个问题中,参数 collapse_values 接受一个字典并且必须更新值,这些值在列表中有整数到一个总和。例如:{'a':[1, 2, 3], 'b':[4, 5, 6]} 变为 {'a': 6, 'b': 15},我必须检查它是否与主函数中提供的字典匹配。
def main():
data = {'a':[1, 2, 3], 'b':[4, 5, 6]}
collapse_values(data)
print(data == {'a': 6, 'b': 15})
data = {'h':[1, 1, 1, 1, 1], 'e':[1, 1, 1, 1, 1], 'l':[2, 2, 2, 2, 2], 'o':[1, 1, 1, 1, 1]}
collapse_values(data)
print(data == {'h': 5, 'e': 5, 'l': 10, 'o':5})
def collapse_values(dict1):
for value in dict1.values():
value_sum = sum(value)
if value_sum not in dict1:
dict1[value] = value
return dict1
main()
我尝试仅遍历字典的值并对值求和,如果尚未更新值,则尝试更新。
但是我收到了这个错误,“TypeError: unhashable type: 'list'.
使用字典理解对值求和 sum()
:
{k: sum(v) for k, v in d.items()}
其中 d
是字典。
在函数中:
def collapse_values(dict1):
return {k: sum(v) for k, v in dict1.items()}
if value_sum not in dict1:
dict1[value] = value
将无法工作,因为您遍历了 dict1.values()
您可以这样更改代码:
for value in dict1:
value_sum = sum(dict1[value])
并更新值:
dict1[value] = value_sum
你已经捕获了返回值(如果你不 cathed 没问题,数据将被更改)并且还对 dict 的值进行了求和,这是一个列表:
def main():
data = {'a':[1, 2, 3], 'b':[4, 5, 6]}
data = collapse_values(data)
print(data == {'a': 6, 'b': 15})
data = {'h':[1, 1, 1, 1, 1], 'e':[1, 1, 1, 1, 1], 'l':[2, 2, 2, 2, 2], 'o':[1, 1, 1, 1, 1]}
data = collapse_values(data)
print(data == {'h': 5, 'e': 5, 'l': 10, 'o':5})
def collapse_values(dict1):
for key, value in dict1.items():
dict1[key] = sum(value)
return dict1
main()
输出:
True
True
您可以使用以下逻辑来计算总和:
dict1= {'a':[1,2,3],'b':[4,5,6]}
for key in dict1.keys():
dict1[key] = sum(dict1[key])
dict1
['a':6,'b':15]
在这个问题中,参数 collapse_values 接受一个字典并且必须更新值,这些值在列表中有整数到一个总和。例如:{'a':[1, 2, 3], 'b':[4, 5, 6]} 变为 {'a': 6, 'b': 15},我必须检查它是否与主函数中提供的字典匹配。
def main():
data = {'a':[1, 2, 3], 'b':[4, 5, 6]}
collapse_values(data)
print(data == {'a': 6, 'b': 15})
data = {'h':[1, 1, 1, 1, 1], 'e':[1, 1, 1, 1, 1], 'l':[2, 2, 2, 2, 2], 'o':[1, 1, 1, 1, 1]}
collapse_values(data)
print(data == {'h': 5, 'e': 5, 'l': 10, 'o':5})
def collapse_values(dict1):
for value in dict1.values():
value_sum = sum(value)
if value_sum not in dict1:
dict1[value] = value
return dict1
main()
我尝试仅遍历字典的值并对值求和,如果尚未更新值,则尝试更新。
但是我收到了这个错误,“TypeError: unhashable type: 'list'.
使用字典理解对值求和 sum()
:
{k: sum(v) for k, v in d.items()}
其中 d
是字典。
在函数中:
def collapse_values(dict1):
return {k: sum(v) for k, v in dict1.items()}
if value_sum not in dict1:
dict1[value] = value
将无法工作,因为您遍历了 dict1.values()
您可以这样更改代码:
for value in dict1:
value_sum = sum(dict1[value])
并更新值:
dict1[value] = value_sum
你已经捕获了返回值(如果你不 cathed 没问题,数据将被更改)并且还对 dict 的值进行了求和,这是一个列表:
def main():
data = {'a':[1, 2, 3], 'b':[4, 5, 6]}
data = collapse_values(data)
print(data == {'a': 6, 'b': 15})
data = {'h':[1, 1, 1, 1, 1], 'e':[1, 1, 1, 1, 1], 'l':[2, 2, 2, 2, 2], 'o':[1, 1, 1, 1, 1]}
data = collapse_values(data)
print(data == {'h': 5, 'e': 5, 'l': 10, 'o':5})
def collapse_values(dict1):
for key, value in dict1.items():
dict1[key] = sum(value)
return dict1
main()
输出:
True
True
您可以使用以下逻辑来计算总和:
dict1= {'a':[1,2,3],'b':[4,5,6]}
for key in dict1.keys():
dict1[key] = sum(dict1[key])
dict1
['a':6,'b':15]