我有持有对键/值Python列表:列表转换为每个键具有多个值的字典转换?
l=[ [1, 'A'], [1, 'B'], [2, 'C'] ]
我要将列表转换成一个字典,其中每个键多个值将被汇总到一个元组:
{ 1:('A', 'B'), 2:('C',) }
迭代解决方案很简单:
l=[ [1, 'A'], [1, 'B'], [2, 'C'] ]
d={}
for pair in l:
if d.has_key(pair[0]):
d[pair[0]]=d[pair[0]]+tuple(pair[1])
else:
d[pair[0]]=tuple(pair[1])
print d
{1: ('A', 'B'), 2: ('C',)}
是否有完成这个任务,更优雅,Python的解决方案吗?
S/multilpe /多 – vstrien 2011-03-21 13:36:24
'has_key'是的道路上的垃圾箱Python历史记录 - 如果您必须测试字典中是否存在密钥,请使用新的语法“if key in dict:'。但是对于你的问题的“答案”是@ eumiro的defaultdict方法。 – PaulMcG 2011-03-21 13:43:58
@vstrien谢谢。添加一个'/ g'会使它更通用:-) – 2011-03-21 13:51:57