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

时间:2015-08-20 05:30:24

标签: python python-2.7 dictionary reversing

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

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

我想要反转它以便它返回:

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

我有没有听说过可以做到这一点的功能?一些代码行也很好。

5 个答案:

答案 0 :(得分: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)])

答案 1 :(得分:1)

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="count">0</span>
<span class="count">1</span>
<span class="count">2</span>

答案 2 :(得分:0)

字典使用Hashmap存储Key和相应的值。

请注意:Is a Python dictionary an example of a hash table?

与哈希相关的任何内容都没有订单。

你可以这样做:

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()会返回已排序的列表,而您不能use d.items().sort()不返回,而是会尝试覆盖d.items()

答案 3 :(得分:0)

这将起作用。 根据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

答案 4 :(得分:0)

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