如果我有一本像这样的字典:

{'a': 1, 'b': 2, 'c': 3}

我怎么把它转换成这个?

[('a', 1), ('b', 2), ('c', 3)]

我怎么把它转化成这个?

[(1, 'a'), (2, 'b'), (3, 'c')]

当前回答

>>> d = { 'a': 1, 'b': 2, 'c': 3 }
>>> list(d.items())
[('a', 1), ('c', 3), ('b', 2)]

对于Python 3.6及更高版本,列表的顺序是您所期望的。

在Python 2中,你不需要list。

其他回答

创建一个命名元组列表

使用namedtuple通常非常方便。例如,你有一个字典,'name'作为键,'score'作为值,如下所示:

d = {'John':5, 'Alex':10, 'Richard': 7}

你可以以元组的形式列出这些项目,如果你喜欢的话可以进行排序,然后得到名字和分数,比如得分最高的球员(index=0),非常python化:

>>> player = best[0]

>>> player.name
        'Alex'
>>> player.score
         10

怎么做:

按随机顺序或保存集合的顺序列出。OrderedDict:

import collections
Player = collections.namedtuple('Player', 'name score')
players = list(Player(*item) for item in d.items())

按值('score')排序:

import collections
Player = collections.namedtuple('Player', 'score name')

以最低分数排序:

worst = sorted(Player(v,k) for (k,v) in d.items())

以最高分排序:

best = sorted([Player(v,k) for (k,v) in d.items()], reverse=True)
d = {'John':5, 'Alex':10, 'Richard': 7}
list = []
for i in d:
   k = (i,d[i])
   list.append(k)

print list

这些是Python 3的重大变化。Python 2.x

Python3。x使用

dictlist = []
for key, value in dict.items():
    temp = [key,value]
    dictlist.append(temp)

对于Python 2.7使用

dictlist = []
for key, value in dict.iteritems():
    temp = [key,value]
    dictlist.append(temp)
>>> d = { 'a': 1, 'b': 2, 'c': 3 }
>>> list(d.items())
[('a', 1), ('c', 3), ('b', 2)]

对于Python 3.6及更高版本,列表的顺序是您所期望的。

在Python 2中,你不需要list。

通过dictionary和zip的keys()和values()方法。

Zip将返回一个元组列表,它的作用类似于一个有序字典。

演示:

>>> d = { 'a': 1, 'b': 2, 'c': 3 }
>>> zip(d.keys(), d.values())
[('a', 1), ('c', 3), ('b', 2)]
>>> zip(d.values(), d.keys())
[(1, 'a'), (3, 'c'), (2, 'b')]