我有一个这样的列表:
list=[[21768L, u'2'], [1746L, u'2'], [2239L, u'2'],[2239L, u'2'], [1965L, u'2'],[1965L, u'2'], [2425L, u'1'], [2425L, u'1'],[2056L, u'1']]
如何以这样的字典形式获取上述列表:
d={u'1':[2425L,2],[2056L,1] , u'2': [21768L, 1],[1746L,1],[2239L,2],[1965L,2]}
最佳答案
使用 defaultdict
和 Counter
,它们都来自 collections
模块:
from collections import defaultdict, Counter
d = defaultdict(Counter)
for value, key in yourlist:
d[key].update([value])
这给了你稍微不同的结构:
defaultdict(<class 'collections.Counter'>, {u'1': Counter({2425L: 2, 2056L: 1}), u'2': Counter({1965L: 2, 2239L: 2, 21768L: 1, 1746L: 1})})
但可以按摩到更接近您要寻找的东西:
d = {key: value.most_common() for key, value in d.iteritems()}
给出:
{u'1': [(2425L, 2), (2056L, 1)], u'2': [(1965L, 2), (2239L, 2), (21768L, 1), (1746L, 1)]}
关于python - 多个列表的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786648/