给定Python dict
之类的:
{
'a': 1,
'b': 2,
'c': 3
}
使用键和值在线创建平面列表的简单方法是什么? E.g:
['a', 1, 'b', 2, 'c', 3]
答案 0 :(得分:5)
In [39]: d = {
'a': 1,
'b': 2,
'c': 3
}
In [40]: list(itertools.chain.from_iterable(d.items()))
Out[40]: ['b', 2, 'a', 1, 'c', 3]
请注意,dicts是无序的,这意味着您输入键的顺序并不总是它们的存储顺序。如果您想保留订单,可能需要ordereddict
答案 1 :(得分:5)
由于您使用的是Python 2.7,我建议您使用dict.iteritems
或dict.viewitems
以及列表理解,就像这样
>>> [item for pair in d.iteritems() for item in pair]
['a', 1, 'c', 3, 'b', 2]
>>> [item for pair in d.viewitems() for item in pair]
['a', 1, 'c', 3, 'b', 2]
dict.iteritems
或dict.viewitems
优于dict.items
,因为他们不会创建键值对列表。
如果您想知道如何编写在Python 3.x中有效的可移植代码,那么您只需迭代这样的键
>>> [item for k in d for item in (k, d[k])]
['a', 1, 'c', 3, 'b', 2]
答案 2 :(得分:1)
您可以使用sum
:
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> sum(d.items(), tuple())
('a', 1, 'c', 3, 'b', 2)