簡體   English   中英

如何反轉python dict中的鍵順序?

[英]How to reverse order of keys in python dict?

這是我的代碼:

a = {0:'000000',1:'11111',3:'333333',4:'444444'}

for i in a:
    print i

表明:

0
1
3
4

但我希望它顯示:

4
3
1
0

那么,我能做什么?

迭代的順序鍵是任意的。 他們按順序排列只是巧合。

>>> a = {0:'000000',1:'11111',3:'333333',4:'444444'}
>>> a.keys()
[0, 1, 3, 4]
>>> sorted(a.keys())
[0, 1, 3, 4]
>>> reversed(sorted(a.keys()))
<listreverseiterator object at 0x02B0DB70>
>>> list(reversed(sorted(a.keys())))
[4, 3, 1, 0]

由於Python 3.7 dicts保留 order ,這意味着您現在可以執行此操作:

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

for k in reversed(list(my_dict.keys())):
    print(k)

輸出:

b
c
a

由於Python 3.8內置的reversed()接受字典,因此您可以使用:

for k in reversed(my_dict):
    print(k)

字典是無序的,因此您無法反轉它們。 電流輸出的順序是任意的。

也就是說,您當然可以訂購鑰匙:

for i in sorted(a.keys(), reverse=True):
    print a[i];

但這為您提供了排序鍵的相反順序,不一定是鍵添加方式的相反順序。 即,如果您的字典是:它不會給您1 0 3

a = {3:'3', 0:'0', 1:'1'}

嘗試:

for i in sorted(a.keys(), reverse=True):
    print i

Python 詞典沒有任何關聯的“順序”。 dict 打印相同的順序只是一個“巧合”。 不能保證字典中的項目以任何順序出現。

如果要處理排序,則需要將字典轉換為列表。

a = list(a) # keys in list
a = a.keys() # keys in list
a = a.values() # values in list
a = a.items() # tuples of (key,value) in list

現在您可以正常對列表進行排序,例如a.sort()並將其反轉,例如a.reverse()

Python dict 在 2.x 中沒有排序。 但是在3.1 中有一個有序的 dict 實現。

for i in reversed(sorted(a.keys())):
    print i

在我使用的 Python 3.6 中,我在函數更新的幫助下顛倒了鍵及其各自值的順序。

original_dict={'A':0,'C':2,'B':1}
new_dict={}
for k,v in original_dict.items():
    dict_element={k:v}
    dict_element.update(new_dict)
    new_dict=dict_element

print(new_dict)

它應該打印出來:

{'B':1,'C':2,'A':0}

我的 2 美分。

如果要保留插入順序而不是字母順序,則可以使用:

dict(list(your_dict.keys())[::-1])

或者對於整個字典:

dict(list(your_dict.items())[::-1])

如果你有一本這樣的字典

{'faisal2': 2, 'umair': 2, 'fais': 1, 'umair2': 1, 'trending': 2, 'apple': 2, 'orange': 2}

並且您想要反向排序字典,您可以使用:

dict(sorted(counts.items(), key=lambda item: item[1],reverse=True))

輸出將是:

{'faisal2': 2, 'umair': 2, 'trending': 2, 'apple': 2, 'orange': 2, 'fais': 1, 'umair2': 1}

你試一試,

輸入: a = {0:'000000',1:'11111',3:'333333',4:'444444'}

[x for x in sorted(a.keys(), reverse=True)]

輸出: [4, 3, 1, 0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM