Python:具有最长键的唯一值

时间:2015-01-11 17:37:20

标签: python dictionary

所以,我的字典有点像这样:

'/a' : [10, 22, 12]
'/a/b' : [10, 22, 12]
'/a/b/c' : [10, 22, 12]
'/a/b/c/d' : [10, 22, 12]
'/e' : [11, 28, 16]
'/e/f' : [11, 28, 16]
'/e/f/h' : [11, 28, 16]
'/e/f/h/i' : [11, 28, 16]
'/j' : [10, 22, 12]
'/j/k' : [10, 22, 12]
'/j/k/l' : [10, 22, 12]
'/j/k/l/m' : [10, 22, 12]

我想要的是以下内容:

'/a/b/c/d' : [10, 22, 12]
'/e/f/h/i' : [11, 28, 16]
'/j/k/l/m' : [10, 22, 12]

我该怎么做?

1 个答案:

答案 0 :(得分:0)

from itertools import groupby
from operator import itemgetter
res = []
for k,v in groupby(sorted(d.items(),key=itemgetter(1)),key=itemgetter(1)):
    v = list(v)
    mx = max(v,key=lambda x:len(x[0]))
    res += [x for x in v if len(x[0]) == len(mx[0])]

res.sort()
for k,v in res:
    print(k,v)
('/a/b/c/d', [10, 22, 12])
('/e/f/h/i', [11, 28, 16])
('/j/k/l/m', [10, 22, 12])
相关问题