[英]Creating tuple pairs from a dictionary that has a list as value
我试图从具有列表作为值的字典中获取元组对的列表。
d={ 'a': [1,2], 'b': [4,5], 'c': [7,8] }
print(d.items())
>>[('a', [1, 2]), ('b', [4, 5]),('c', [7, 8]) ]
我如何以这种形式获得清单
[('a', 1),('a', 2), ('b',4),('b',5),('c',7),('c',8)]
使用简单的列表理解:
d = {'a': [1,2,3], 'b': [4,5,6]}
l = [(k, v) for k in d for v in d[k]]
print(l) # => [('a', 1), ('a', 2), ('a', 3), ('b', 4), ('b', 5), ('b', 6)]
可能还有其他方法可以做到这一点,但这很简单,不需要其他库。
它很简单,使用单线:)
>>>
>>> d={ 'a': [1,2], 'b': [4,5], 'c': [7,8] }
>>> [(key,item) for item in value for key, value in d.iteritems()]
[('a', 4), ('c', 4), ('b', 4), ('a', 5), ('c', 5), ('b', 5)]
>>>
如果您想对内置功能进行排序
>>> d={ 'a': [1,2], 'b': [4,5], 'c': [7,8] }
>>> sorted([(key,item) for item in value for key, value in d.iteritems()])
[('a', 4), ('a', 5), ('b', 4), ('b', 5), ('c', 4), ('c', 5)]
>>>
>>> d = {'a': [1, 2], 'b': [4, 5], 'c': [7, 8]}
您可以使用dict.items()
访问键值对。
>>> list(d.items())
[('a', [1, 2]), ('c', [7, 8]), ('b', [4, 5])]
然后,您可以遍历这些对,并遍历列表值:
>>> [(key, value) for (key, values) in d.items()
... for value in values]
[('a', 1), ('a', 2), ('c', 7), ('c', 8), ('b', 4), ('b', 5)]
字典键不是按字母顺序排列的。 如果您想获得问题的确切输出,则需要在创建列表之前或之后对它们进行排序:
>>> pairs = _
>>> sorted(pairs)
[('a', 1), ('a', 2), ('b', 4), ('b', 5), ('c', 7), ('c', 8)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.