python字典鍵排序
1. python字典排序問題
python字典里根本就沒順序,即便你用鍵值大小排序,那你也把所有簡直放到一個列表裡比較下才能找到最值,最終還是在列表裡完成的排序。
2. python字典是否有序
默認情況下Python的字典輸出順序是按照鍵的創建順序。
字典的無序是指,不能人為重新排序。
比如說你按鍵值1,2,3,4的順序創建的字典,只能由解析器按創建順序,還是1,2,3,4的輸出。
你無法控制它按照4,3,2,1的順序輸出,你也無法做到1,3,2,4的順序。
而且這個輸出順序是也不是能真正按照創建順序可以控的。
這裡面有兩個影響因素:
(1)鍵值的哈希碰撞,hash(key1) == hash(key2)時,向字典里連續添加的這個兩個鍵的順序是不可以控制的,也是無法做到連續的,後來的鍵會按演算法調整到其它位置。
(2)字典空間擴容,當鍵的數量超過字典默認開的空間時,字典會做空間擴容,擴容後的鍵順和創建順序就會發生變化,不受人為控制。
3. python字典中根據值的大小,按順序排列鍵有什麼方法
s={"a":"bb","b":"cc","c":"aa"}
deffun(s):
d=sorted(s.iteritems(),key=lambdat:t[1],reverse=False)
returnd
d=fun(s)
printd
iteritems()得到的[(鍵,值)]的列表,通過sorted方法,指定排序的鍵值key是原來字典中的value屬性,其中用到了匿名函數lambda,參數為t列表,返回第二個元素t[1],也就是每個鍵值對中的value,從小到大排序時reverse=False,從大到小排序是True!
4. python怎麼對字典進行排序
給你看看這個字典
dic
=
{'a':1
,
'b':2
,
'c':
3},字典中的元素沒有順序,所以dic[0]是有語法錯誤的。並且不可以有重復的鍵值,所以
dic.add['c']
=
4後,字典變成
{'a':1
,
'b':2
,
'c':
4}.現思考如下:如何根據需要可以根據「鍵」或「鍵值」進行不同順序的排序?函數原型:sorted(dic,value,reverse)解釋:dic為比較函數,value
為排序的對象(這里指鍵或鍵值),
reverse:註明升序還是降序,true--降序,false--升序(默認)案例:dic
=
{'a':1
,
'b':2
,
'c':
3}1.print
sorted(dic.iteritems(),
key
=
lambda
asd:asd[0]
,reverse
=
true)#結果:[('c',
3),
('b',
2),
('a',
1)]2.print
sorted(dic.iteritems(),
key
=
lambda
asd:asd[0]
)#結果:[('a',
1),
('b',
2),
('c',
3)]
,默認(升序)3.print
sorted(dic.iteritems(),
key
=
lambda
asd:asd[1]
)#結果:[('a',
1),
('b',
2),
('c',
3)]這里介紹兩個函數:1.lambda案例:fuc
=
lambda
x:x+
2print
fuc(3)
#結果5,意思對於x
,返回
x
+
22.iteritems()案例:dic
=
{'a':1
,
'b':2
,
'c':
3}print
dic.iteritems()
#
返回字典鍵-值對的一個迭代器在函數sorted(dic.iteritems(),
key
=
lambda
asd:asd[1])中,第一個參數傳給第二個參數「鍵-鍵值」,第二個參數取出其中的鍵(【0】)或鍵值(【1】)
5. python字典怎麼排序
python字典怎麼排序?
定義一個字典類型
mydict = {2: '小路', 3: '黎明', 1: '郭富城', 4:'周董'}
可分別列印 key和value 看一下數據
按KEY排序,使用了 lambda和 reverse= False(正序)
key和value都輸出
reverse= True(逆序)
按value排序,漢字次序不是按拼音輸出
sorted並不改變字典本身的數據次序。
輸出後為列表和元組
可以 A = sorted(mydict.items(),key = lambda mydict:mydict[1],reverse= False) 賦值給A ,A的次序是變化後的
推薦:《Python教程》
注意事項
sorted並不改變字典本身的數據次序
如果要變化後的 可以賦值給另一個列表變數以上就是小編分享的關於python字典怎麼排序的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
6. python 字典排序
dict_a={0:5,1:4,2:5,3:4,4:2,5:2,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:4,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:2,24:3,25:2,26:0,27:1,28:1,29:0,30:2,31:3,32:3,33:3}
dict_b=sorted(dict_a.iteritems(),key=lambdad:d[1],reverse=True)
printdict_a
printdict_b
foriinrange(5):
printdict_b[i][0]
7. Python字典嵌套字典排序,該怎麼處理
感覺這個需求有些許問題,因為通常對比排序的都是同一類型的數據,譬如aaa代表是年齡,bbb代表的是工資,等等... 所以不會拿自己的年齡和工資作一次排序。
# 要做的話,可以手動給它並成一個新列『sort_key』。 obj就是你最外層的a,免得同名混淆
for i in obj:
obj[i]['sort_key'] = obj[i].values()[0]
# 目的是構造出這樣的結構:
# ('c', {'sort_key': 1, 'ccc': 1}), ('d', {'sort_key': 2, 'ddd': 2}), .....)
print(sorted(obj.items(), key = lambda x:x[1]['sort_key']))
8. python 字典排序
字典是無序的,兄弟
你看嘛:
>>>testmap={123:['aaa',5],234:['bbb',2],345:['ccc',3],456:['ddd',1]}
>>>printtestmap
{456:['ddd',1],345:['ccc',3],234:['bbb',2],123:['aaa',5]}
>>>testmap={456:['ddd',1],234:['bbb',2],345:['ccc',3],123:['aaa',5]}
>>>printtestmap
{456:['ddd',1],345:['ccc',3],234:['bbb',2],123:['aaa',5]}
>>>
9. python中字典能排序嗎
用標準的dict生成的字典是無序的。但python在標准庫中提供了ordereddict,它提供了有序字典的數據結構。