python對字典值排序
⑴ 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!
⑵ python字典有多個值的排序
s = {"a":"bb","b":"cc","c":"aa"}
def fun(s):
d = sorted(s.iteritems(),key=lambda t:t[1],reverse=False)
return d
d = fun(s)
print d
iteritems() 得到的[(鍵,值)]的列表, 通過sorted方法,指定排序的鍵值key是原來字典中的value屬性,其中用到了匿名函數lambda, 參數為t列表,返回第二個元素t[1],也就是每個鍵值對中的value, 從小到大排序時 reverse=False,從大到小排序是True!
⑶ Python字典如何排序啊,給例子謝謝
在Python2.7.x版本中, collections類增加了OrderedDict, 用法如下:
在Python2.7.x版本中, collections類增加了OrderedDict, 用法如下:
pywugw@pywugw-laptop:~$ /usr/local/bin/python2.7
Python 2.7b1 (r27b1:79927, Apr 26 2010, 11:44:19)
[GCC 4.4.3] on linux2
Type "help", "right", "credits" or "license" for more information.
>>> from collections import OrderedDict
>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
#按key排序
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
#按value排序
>>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
#按key的長度排序
>>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))
OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])
⑷ python 字典排序 字典序排序是什麼意思
字典就是包含key:value對的集合
比如
L = [{"name": "zhangsan", "birth":19920208, "gender":"m"}, {"name": "lisi", "birth":19900609, "gender":"m"}, {"name": "wanghong", "birth":19950907, "gender":"f"}]
對字典排序就是對列表進行排序後列印:
from operator import itemgetter
L = sorted(L,key=itemgetter('birth'),reverse=True)
for i in range(0,len(L)):
... print("Name: {:10} Gender: {:2} Birth: {}".format(L[i]["name"],L[i]["gender"],L[i]["birth"]))
⑸ 想問下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!
⑹ 求python 字典 中根據值的大小,按順序排列鍵的方法
sorted函數原型:
sorted(iterable[, cmp[,
key[, reverse]]])
這里只用了第一個和第三個參數。
第一個參數就是原列表,若只有這一個參數的話默認按照字典的關鍵字(鍵)來排序,這樣會得到:
['a', 'b', 'c', 'd', 'e', 'f']
第三個參數說明如下:
key specifies a function of one argument that is used to extract a
comparison key from each list element. 就是說,需要指定只有一個參數的函數,用於排序比較。
lambda 是匿名函數,lambda後跟的k即為函數參數,d[k]是函數返回值。
匿名函數,顧名思義,沒有函數名。
這個lambda匿名函數的作用就是將 d[k] 即關鍵字的值作為排序的依據。
這個代碼就是根據值的大小排序鍵的方法。
⑺ 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]}
>>>
⑻ python中字典能排序嗎
字典本身就是無序的,也就不存在排序。
但是可以參照鍵、值,就行排序輸出元組列表,
例如圖中例子
⑼ python中字典如何按照value值排序,並分別取出前n個value值和key值
before={
"key1":5,
"key2":6,
"key3":4,
"key4":3,
}
#排序
after=dict(sorted(before.items(),key=lambdae:e[1]))
print(after)
#取出前幾個,也可以在sorted返回的list中取前幾個
cnt=0
forkey,valueinafter.items():
cnt+=1
ifcnt>required_cnt:
break
print("{}:{}".format(key,value))
⑽ 關於python當中字典值排序的問題
#!/usr/bin/envpython
#coding:utf-8
#
#author:TimWang
#date:Nov.,2014
#filename:/qa3.py
"""以下代碼僅提供擴展參考的方法,在2.7版本下可運行。"""
importre
defparser(dataserial,patt,keyname,*evalattrs):
"""對給定的dataserial數據序列,用進行正則解析
對指定的evalattrs進行值轉換,
以其中的keyname為字典鍵值,
"""
collector={}
formatchedinfilter(None,map(patt.match,dataserial)):
data=matched.groupdict()
forattrinevalattrs:
data[attr]=eval(data[attr])
collector[data.get(keyname)]=data
returncollector
defiterdictsort(dictdatas,sortattr):
forvinsorted(dictdatas.values(),
key=lambdav:v.get(sortattr)):
yieldv
context=u"""
廣州2014-11-22蘋果996
深圳2014-11-23香蕉1075
杭州2014-11-24番茄543
北京2014-11-25橘子824
"""
patt=re.compile(r"""^
(?P<locale>S+)
s+
(?P<date>S+)
s+
(?P<proct>S+)
s+
(?P<qty>d+)
s+
(?P<amount>d+)
s*$""",re.I|re.U|re.X)
fmt=u"{locale}{date}{qty:4}{amount:8}"
datas=parser(context.splitlines(),patt,"locale","qty","amount")
print"="*32
print" ".join(fmt.format(**data)
fordatainiterdictsort(datas,'qty'))
print"="*32
print" ".join(fmt.format(**data)
fordatainiterdictsort(datas,'amount'))