我有一个列表,我按以下方式填写:
complete = []
for (i,j) in list:
complete.append('%s %s %s'%(i,j,R[i,j]))
该列表(作为示例)具有以下元素:
complete = ['B A 1', 'A H 1', 'P B 1', 'H B 1', 'B W 1', 'B M 9', 'M R 9', 'R P 9', 'P A 9', 'C S 7', 'B C 7', 'B A 7', 'A H 7', 'B P 7', 'M B 7', 'P B 7', 'H B 7']
我想检查哪些字母重复,并在这种情况下添加与它们对应的数字。 在这个例子中,(B A)以1和7重复,因此其中一个输出必须是'B A 8'。
我也可以改变我追加元素的方式来完成,但我不知道其他方式。
谢谢!
答案 0 :(得分:2)
你可以试试这个:
from collections import Counter, defaultdict
complete = ['ASO BAIS 1', 'HEL CIO 5']
d = Counter([i[:-1] for i in complete])
new_d = defaultdict(int)
for i in complete:
if d[i[:-1]] > 0:
new_d[i[:-1]] += int(i[-1])
print(dict(new_d))
#maximum value:
maximum = max(new_d.values())
print(maximum)
输出:
{'HEL CIO ': 5, 'ASO BAIS ': 1}
答案 1 :(得分:0)
这可以通过两个步骤非常简单地完成:
>>> lst = ['B A 1', 'A H 1', 'P B 1', 'H B 1', 'B W 1', 'B M 9', 'M R 9', 'R P 9', 'P A 9', 'C S 7', 'B C 7', 'B A 7', 'A H 7', 'B P 7', 'M B 7', 'P B 7', 'H B 7']
>>> keys = set(key[:3] for key in lst)
>>>
>>> new_dict = {key: 0 for key in keys}
>>> for el in lst:
... new_dict[el[:3]] += int(el[4])
...
>>> new_dict
{'B C': 7, 'H B': 8, 'R P': 9, 'B A': 8, 'B P': 7, 'B M': 9, 'P A': 9, 'A H': 8, 'C S': 7, 'M B': 7, 'M R': 9, 'P B': 8, 'B W': 1}
>>>