【发布时间】:2021-12-25 04:28:36
【问题描述】:
如果项目与字典键一致,我正在尝试计算不同列表中的项目并将它们附加到字典中,但我正在努力解决语法和缩进,这就是我想要做的:
# List of lists
lists = []
list_1 = (A,B,C)
list_2 = (A,A,B,B,C,C)
list_3 = (A,A,A,B,B,B,C,C,C)
lists.extend([list_1, list_2, list_2])
# Dictionary with several values
ABC_dictionary = {'A': { 'name': 'A', 'MW': 5},
'B': { 'name': 'A', 'MW': 6},
'c': { 'name': 'A', 'MW': 7},
'D': { 'name': 'A', 'MW': 8}}
# Get the letter count on each list
for list in lists:
for letter, key in zip(list, ABC_dictionary.keys()):
if letter in ABC_dictionary.keys():
ABC_dictionary[letter].update({'count' : 0})
ABC_dictionary[letter]['count'] += list.count(letter)
但是,这实际上会造成混乱并返回我不太了解的计数。
我想要的结果是:
#list_1
ABC_dictionary = {'A': { 'name': 'A', 'MW': 5, 'count': 1},
'B': { 'name': 'A', 'MW': 6, 'count': 1},
'c': { 'name': 'A', 'MW': 7, 'count': 1}.
'D': { 'name': 'A', 'MW': 8, 'count': 0}}
#list_2
ABC_dictionary = {'A': { 'name': 'A', 'MW': 5, 'count': 2},
'B': { 'name': 'A', 'MW': 6, 'count': 2},
'c': { 'name': 'A', 'MW': 7, 'count': 2}.
'D': { 'name': 'A', 'MW': 8, 'count': 0}}
#list_3
ABC_dictionary = {'A': { 'name': 'A', 'MW': 5, 'count': 3},
'B': { 'name': 'A', 'MW': 6, 'count': 3},
'c': { 'name': 'A', 'MW': 7, 'count': 3}.
'D': { 'name': 'A', 'MW': 8, 'count': 0}}
对于每个列表,我将进行一些其他计算,例如:
A_weight = ABC_dictionary['A']['MW'] * ABC_dictionary['A']['count']
我知道对于每个列表,计数都会覆盖前一个,所以我也想知道是否有一种方法可以存储这些值以将它们添加到另一个列表中。
感谢您的帮助!
【问题讨论】:
-
你为什么要压缩字典的键?你永远不会使用
key做任何事情。 -
每次循环时都对字典进行深拷贝。
标签: python list dictionary for-loop append