假设有一个 Python dict
,例如:
{
'a': 1,
'b': 2,
'c': 3
}
如何轻松地创建带有在同一行的键和值的平面列表?例如:
['a', 1, 'b', 2, 'c', 3]
假设有一个 Python dict
,例如:
{
'a': 1,
'b': 2,
'c': 3
}
如何轻松地创建带有在同一行的键和值的平面列表?例如:
['a', 1, 'b', 2, 'c', 3]
由于你使用的是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]
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]
请注意,字典是无序的,这意味着您输入键的顺序并不总是它们存储的顺序。如果您想保留顺序,您可能正在寻找一个有序字典
[item for pair in d.items() for item in pair]
几乎没有差别:分别为1.05微秒和681纳秒。 - jfssum
:>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> sum(d.items(), tuple())
('a', 1, 'c', 3, 'b', 2)
list(sum(d.items(), tuple()))
可以达到期望的结果。 - blah238d = {k:k for k in range(100000)}
,然后去泡杯茶。 - Padraic Cunninghamres_list = []
for k, v in d:
res_list.append(k).append(v)
(list(itertools.chain(*sorted(d.iteritems()))))
- Padraic Cunninghamyour_list = list(eval(your_dict.__str__().replace(':',',')))
, or use a regex to replace':'
to','
- L F