如何在Python中将字典转换为元组?

3

你可能经常看到这种问题,但我在这里的需求不同。

假设我有一个字典 d = {'1': 'stack', '2': 'over', '3': 'flow'},我想创建一个类似于 t = ('1', 'stack', '2', 'over', '3', 'flow') 的元组。

最简单的方法是什么?

1个回答

6
您可以使用itertools.chain。请注意,由于字典没有固定顺序,因此该元组将不具有可重现的顺序:
In [1]: d = {'1': 'stack', '2': 'over', '3': 'flow'}

In [2]: from itertools import chain

In [3]: tuple(chain.from_iterable(d.items()))
Out[3]: ('1', 'stack', '3', 'flow', '2', 'over')

在Python 2.x中,您可以使用d.iteritems()而不是d.items()。编辑:如评论中的EdChum所指出的那样,您可以通过对项应用sorted来确保顺序。但请注意,默认情况下字符串按字典顺序排序。
In [4]: sorted(['2', '10'])
Out[4]: ['10', '2']

你可以通过向 sorted 提供 key 参数来覆盖此行为:
In [5]: key = lambda i: (int(i[0]), i[1])

In [6]: tuple(chain.from_iterable(sorted(d.items(), key=key)))
Out[6]: ('1', 'stack', '2', 'over', '3', 'flow')

你需要对键进行排序才能获得顺序:tuple(chain.from_iterable(sorted(d.items()))) - EdChum
感谢@EdChum,答案已相应扩展。 - Lev Levitsky
谢谢,其实我不需要结果有序,所以sorted并不是必要的。 - fish748

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接