python列表字典排序

列表排序

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')]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值