我想使用鍵值對串列創建一個字典。有重復的鍵,我不希望鍵值是最大值。
L1 = ['a','b','b','d']
L2 = [1,3,2,4]
d = {k:v for k,v in zip(L1,L2)}
{'a': 1, 'b': 2, 'd': 4}
在上面的代碼中,鍵 'b' 的值是 2,我希望它只保持 3,因為這是最大值。
uj5u.com熱心網友回復:
也許你也可以在那里放一個排序,這樣最高的值會放在最后并被保留
d = dict(sorted(zip(L1,L2))
uj5u.com熱心網友回復:
L1 = ['a','b','b','d']
L2 = [1,3,2,4]
d = {}
for k,v in zip(L1,L2):
if k not in d or d[k] < v:
d[k] = v
print(d)
uj5u.com熱心網友回復:
您可以itertools.groupby用于此:注意:我operator.itemgetter用來獲取鍵/值而不是 lambda 或嵌套的 for 回圈
from operator import itemgetter
from itertools import groupby
L1 = ['a','b','b','d']
L2 = [1,3,2,4]
get_k, get_v = itemgetter(0), itemgetter(1)
result = {k: max(map(get_v, g)) for k, g in groupby(zip(L1, L2), get_k)}
uj5u.com熱心網友回復:
>>> L1 = ['a','b','b','d']
>>> L2 = [1,3,2,4]
>>> from collections import defaultdict
>>> x =defaultdict(int)
>>> for a, b in zip(L1, L2):
... if a in x:
... x[a]=max(x[a], b)
... else:
... x[a]=b
...
>>> x
defaultdict(<class 'int'>, {'a': 1, 'b': 3, 'd': 4})
>>>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/373961.html
