本文目錄一覽:
- 1、在Python 3 中的自定義排序怎麼辦
- 2、python字典中根據值的大小,按順序排列鍵有什麼方法?
- 3、python字典怎麼排序
- 4、Python中字典按照指定列表的順序排列
- 5、關於python當中字典值排序的問題
- 6、python字典有多個值的排序
在Python 3 中的自定義排序怎麼辦
python3 sorted取消了對cmp的支持。
python3 幫助文檔:
sorted(iterable, key=None, reverse=False)
reverse是一個布爾值。如果設置為True,列表元素將被倒序排列,默認為False
key接受一個函數,這個函數只接受一個元素,默認為None
Key的作用原理
Python2中的自定義布爾函數cmp=custom_cmp(x, y)由Python3中的key=custom_key(x)代替。
在python3中,待比較元素x通過custom_key函數轉化為Python能比較的值custom_key(x),進而再基於返回值進行排序。
例子1:
my_alphabet = [‘a’, ‘b’, ‘c’]def custom_key(word):
numbers = [] for letter in word:
numbers.append(my_alphabet.index(letter)) return numbers# python中的整數列表能夠比較大小# custom_key(‘cbaba’)==[2, 1, 0, 1, 0]x=[‘cbaba’, ‘ababa’, ‘bbaa’]
x.sort(key=custom_key)123456789101112
例子2
students = [(‘john’, ‘A’, 15), (‘jane’, ‘B’, 12), (‘dave’,’B’, 10)]
sorted(students,key=lambda x: x[2]) #按照年齡來排序12
關於lambda表達式
例子3
默認sorted([True, False])==[False, True] (False=0 True=1)
一個字元串排序,排序規則:小寫大寫奇數偶數
#元組內(e1, e2, e3)的優先順序排列為: e1 e2 e3sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x) % 2 == 0,x.isupper(),x)#input: ‘asdf234GDSdsf23’#output: ‘addffssDGS33224’12345
x.isdigit()的作用是把數字放在後邊(True),字母放在前面(False).
x.isdigit() and int(x) % 2 == 0的作用是保證數字中奇數在前(False),偶數在後(True)。
x.isupper()的作用是在前面基礎上,保證字母小寫(False)在前大寫在後(True).
最後的x表示在前面基礎上,對所有類別數字或字母排序。
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 [1] (英國發音:/ˈpaɪθən/美國發音:/ˈpaɪθɑːn/),是一種面向對象的解釋型計算機程序設計語言,由荷蘭人GuidovanRossum於1989年發明,第一個公開發行版發行於1991年。
Python是純粹的自由軟體, 源代碼和解釋器CPython遵循 GPL(GNU GeneralPublicLicense)協議。Python語法簡潔清晰,特色之一是強制用空白符(whitespace)作為語句縮進。
Python具有豐富和強大的庫。它常被昵稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕鬆地聯結在一起。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面)
然後對其中有特別要求的部分,用更合適的語言改寫,比如3D遊戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。需要注意的是在您使用擴展類庫時可能需要考慮平台問題,某些可能不提供跨平台的實現。
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教程請關注環球青藤其它相關文章!
Python中字典按照指定列表的順序排列
roles = [“OWNER”, “RCOM”, “HRGDL2”, “HRM”, “HRH”, “MP”, “HP”, “VP”, “GM”]
info = {“VP”: “80003”, “HRM”: “F140019”, “MP”: “F130008”, “HRGDL2”: “F140390”, “OWNER”: “F133255”, “RCOM”: “F900151”, “GM”: “00903”, “HP”: “80355”, “HRH”: “81453”}
sorted_dict = map(lambda x:{x:info[x]}, roles)
print(sorted_dict)
關於python當中字典值排序的問題
#!/usr/bin/env python
# coding: utf-8
#
# author: Tim Wang
# date: Nov., 2014
# filename: baidu/qa3.py
“””以下代碼僅提供擴展參考的方法,在2.7版本下可運行。”””
import re
def parser(dataserial, patt, keyname, *evalattrs):
“””對給定的dataserial數據序列,用patt進行正則解析
對指定的evalattrs進行值轉換,
以其中的keyname為字典鍵值,
“””
collector = {}
for matched in filter(None, map(patt.match, dataserial)):
data = matched.groupdict()
for attr in evalattrs:
data[attr] = eval(data[attr])
collector[data.get(keyname)] = data
return collector
def iterdictsort(dictdatas, sortattr):
for v in sorted(dictdatas.values(),
key=lambda v: v.get(sortattr)):
yield v
context = u”””
廣州 2014-11-22 蘋果 9 96
深圳 2014-11-23 香蕉 10 75
杭州 2014-11-24 番茄 5 43
北京 2014-11-25 橘子 8 24
“””
patt = re.compile(r”””^
(?Plocale\S+)
\s+
(?Pdate\S+)
\s+
(?Pproduct\S+)
\s+
(?Pqty\d+)
\s+
(?Pamount\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 “\n”.join(fmt.format(**data)
for data in iterdictsort(datas, ‘qty’))
print “=”*32
print “\n”.join(fmt.format(**data)
for data in iterdictsort(datas, ‘amount’))
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!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/204317.html