列表排序
b = ['T01', 'T07', 'T06', 'T05', 'T04', 'T03', 'T11', 'T12', 'T09', 'T08', 'T10', 'T02']
需要根据除首字符外进行排序
应用sort 及lambda
如下:
b.sort(key = lambda x : int((x[1:])))
print b
# ['T01', 'T02', 'T03', 'T04', 'T05', 'T06', 'T07', 'T08', 'T09', 'T10', 'T11', 'T12']
如果此序列中有重复字符,排序后并不会删除,其中T11为重复,详见以下:
c = ['T01', 'T07', 'T06', 'T05', 'T04', 'T03', 'T11', 'T12', 'T09', 'T08', 'T10', 'T02' , "T11"]
c.sort(key = lambda x : int((x[1:])))
print c
#['T01', 'T02', 'T03', 'T04', 'T05', 'T06', 'T07', 'T08', 'T09', 'T10', 'T11', 'T11', 'T12']
字典排序
按照key值排序
def sortedDictValues1(ip_dict):
items = ip_dict.items()
items.sort()
return [value for key, value in items]
按照key值排序2
def sortedDictValues2(ip_dict):
keys = ip_dict.keys()
keys.sort()
return [ip_dict[key] for key in keys]
按照key值排序3
def sortedDictValues3(ip_dict):
keys = ip_dict.keys()
keys.sort()
return map(ip_dict.get, keys)
一行代码
[(k,ip_dict[k]) for k in sorted(ip_dict.keys())]
按照value排序
def sort_by_value(ip_dict):
items=ip_dict.items()
backitems=[[v[1],v[0]] for v in items]
backitems.sort()
return [ backitems[i][1] for i in range(0,len(backitems))]
一行代码:
[ v for v in sorted(ip_dict.values())]
用lambda表达式来排序,更灵活:
sorted(ip_dict.items(), lambda x, y: cmp(x[1], y[1]))
反序:
sorted(ip_dict.items(), lambda x, y: cmp(x[1], y[1]), reverse=True)
用sorted函数的key= 参数排序:
按照key进行排序
print sorted(ip_dict.items(), key=lambda d: d[0])
按照value进行排序
print sorted(ip_dict.items(), key=lambda d: d[1])
这里是引用
下面给出python内置sorted函数的帮助文档:
sorted(…)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
按照value排序可以用
l = sorted(d.items(), key=lambda d:d[1])
若版本低不支持sorted
将key,value 以tuple一起放在一个list中
l = []
l.append((akey,avalue))…
用sort()
l.sort(lambda a,b :cmp(a[1],b[1]))(cmp前加“-”表示降序排序)
ip_dict = {2: 'T07', 3: 'T06', 4: 'T05', 5: 'T04', 6: 'T03', 7: 'T11', 8: 'T12', 9: 'T09', 10: 'T08', 11: 'T10', 12: 'T02', 13: 'T11', 15: 'T01'}
sorted(ip_dict.items(), key=lambda d: -int(d[1][1:]))
[(8, 'T12'), (7, 'T11'), (13, 'T11'), (11, 'T10'), (9, 'T09'), (10, 'T08'), (2, 'T07'), # # (3, 'T06'), (4, 'T05'), (5, 'T04'), (6, 'T03'), (12, 'T02'), (15, 'T01')]