反转字典中键值对的顺序(Python)

6

如何在Python中反转字典的键值对顺序?例如,我有以下字典:

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

我希望逆转它,以便返回以下结果:
{"c":3, "b":2, "a":1}

有没有我不知道的函数可以做到这一点?也可以提供一些代码行。
5个回答

7

字典本身没有任何排序的概念,因此你的键值对不会按照任何格式排序。

如果你想保留键的顺序,你应该从一开始就使用collections.OrderedDict,而不是使用普通的字典。例如:

>>> from collections import OrderedDict
>>> d = OrderedDict([('a',1),('b',2),('c',3)])
>>> d
OrderedDict([('a', 1), ('b', 2), ('c', 3)])

OrderedDict可以保留字典中键入的顺序。在上面的例子中,它将是列表中存在的键的顺序 - [('a',1),('b',2),('c',3)] - 'a' -> 'b' -> 'c'

然后,您可以使用reversed(d)获取键的反向顺序,例如 -

>>> dreversed = OrderedDict()
>>> for k in reversed(d):
...     dreversed[k] = d[k]
...
>>> dreversed
OrderedDict([('c', 3), ('b', 2), ('a', 1)])

是的,正确的,这不是重点,而是sorted会对其进行排序,OP不想要“排序”,OP希望以相反的顺序获取键。 - Anand S Kumar
1
这在Python 3.6及更新版本中并不适用。现在字典可以保持顺序。 - johnnyheineken

0
#The dictionary to be reversed
dict = {"key1":"value1","key2":"value2","key3":"value3"}

#Append the keys of the dictionary in a list
list_keys = []
for k in dict.keys():
    list_keys.append(k)

rev_dict = {}
#Traverse through the reversed list of keys and add them to a new dictionary
for i in reversed(list_keys):
    rev_dict[i] = dict[I]
print(rev_dict)

#OUTPUT: {'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}

-1

这个会起作用。 基于Venkateshwara的方法,它对我来说“原样”并不起作用。

def reverse(self):
    a = self.yourdict.items()
    b = list(a) # cast to list from dict_view
    b.reverse() # actual reverse
    self.yourdict = dict(b) # push back reversed values

-1

一个字典使用Hashmap来存储键和对应的值。

看看:Python字典是哈希表的例子吗?

任何与哈希相关的东西都没有顺序。

你可以用这个来做:

d = {}
d['a']=1
d['b']=2
d['c']=3
d['d']=4
print d
for k,v in sorted(d.items(),reverse = True):
    print k,v

d.items() 返回一个元组列表:[('a', 1), ('c', 3), ('b', 2), ('d', 4)]k,v 获取元组中的值以在循环中迭代。 sorted() 返回一个排序后的列表,而你不能使用 d.items().sort(),它不会返回任何结果,而是试图覆盖 d.items()


-2
d={"a":1, "b":2, "c":3}
x={}
for i in sorted(d.keys(),reverse=True):
    x[i]=d[i]
print(x)

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