python教程—列表到字典转换,每个键有多个值?-Python实用宝典

python教程—列表到字典转换,每个键有多个值?

我有一个Python列表,其中包含一对键/值:我想把列表转换成一个字典,其中每个键的多个值将聚合成一个元组:

我有一个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解决方案?

回答

    from collections import defaultdict d1 = defaultdict(list) for k, v in l: d1[k].append(v) d = dict((k, tuple(v)) for k, v in d1.iteritems())

d现在包含{1:('A', 'B'), 2: ('C',)}

d1是一个临时的defaultdict,列表作为值,它将在最后一行被转换为元组。通过这种方式,您将附加到列表,而不是在主循环中重新创建元组。

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
1

发表评论