使用基于第二个参数的唯一值在 python 中创建一个新字典

Create a new dictionary in python with unique values based in the second parameter

我有这样的字典

{id : ['string',[1,2,3,4,5]], .....}

我想创建一个包含唯一字符串的新字典。 但是,如果我们有相等的字符串,则根据第二个值的最大平均值过滤其中一个。 例如,我有

{x:['ABC', [1,2,3,4,5], y:['ABC',[6,7,8,9,10],...} 

在这种情况下,x 和 y 的第一个值具有相同的字符串,但是,6,7,8,9,10 的平均值大于 1,2,3,4,5。所以 y 将被附加到新字典

使用以下方法:

# exemplary dict
d = {'x':['ABC', [1,2,3,4,5]], 'y':['ABC',[6,7,8,9,10]], 'z': ['BCA', [1,2,3]]}
new_d = {}

for k,v in d.items():
    if v[0] not in new_d or sum(v[1])/len(v[1]) > sum(new_d[v[0]][0])/len(new_d[v[0]][0]):
        new_d[v[0]] = [v[1], k]

new_d = {v[1]:[k, v[0]] for k,v in new_d.items()}
print(new_d)

输出:

{'y': ['ABC', [6, 7, 8, 9, 10]], 'z': ['BCA', [1, 2, 3]]}