我正在嘗試計算不同串列中的專案,如果專案與字典鍵一致,則將它們附加到字典中,但我在語法和縮進方面苦苦掙扎,這就是我想要做的:
# 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']
我知道對于每個串列,計數都會覆寫前一個串列,所以我也想知道是否有一種方法可以存盤值以將它們添加到另一個串列中。
感謝您的幫助!
uj5u.com熱心網友回復:
做的深層副本ABC_dictionary每個串列中lists。然后您可以將所有這些副本放入另一個串列中。
使用collections.Counter()計算在每個串列中的重復。
from copy import deepcopy
from collections import Counter
results = []
for letters in lists:
cur_dict = deepcopy(ABC_dictionary)
letter_counts = Counter(letters)
for letter, d in cur_dict.items()
d['count'] = letter_counts.get(letter, 0)
results.append(cur_dict)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358203.html
