python的语法--列表中根据字典键值排序

本文深入探讨了生产环境中常见的数据结构处理方法,包括列表套字典的排序技巧、利用zip和dict组合列表与元组创建字典,以及字典套列表的高级应用。通过实例演示了如何在Python中高效操作这些数据结构。

生产环境(manufacturing environment)下最容易遇见的一种数据结构,

1.列表套字典

一个列表,列表下面n个字典,每个字典是一条数据,根据一条数据中的一项进行排序,

例如

storeComRes = [{'difference': 1.2, 'name': 'Jones', 'id': 1003},
               {'difference': 2.4, 'name': 'Beazley', 'uid': 1002}]
all_by_diff = sorted(storeComRes, key=lambda r: r['difference'])
print(all_by_diff)


#下面是结果
#[{'difference': 1.2, 'name': 'Jones', 'id': 1003}, {'difference': 2.4, 'name': 'Beazley', 'uid': 1002}]

第一行生产环境的数据结构,列表套字典,根据字典storeComRes,中的某个键'diff'的从小到大进行排序。

sorted(storeComRes, key=lambda r: r['diff']]

2.dict(zip(list1,list2))

列表和列表,或者列表和元组,组成字典

x = ['a','b','c']
b = [1,2,3]
test = dict(zip(x,b))
print(test)
#结果就是 {'a': 1, 'b': 2, 'c': 3}

组成生产数据结构,列表套字典就是下面。

col_name 是列表,item是一个记录条data元组的一个,item又是一个和col_name 一个一样长的元祖,合并变成了,外面套一个[],在加一个循环,变成生产数据结构

col_name = [x[0] for x in cursor.description]
col_name = ['time', 'feature', 'floor']
data = (('ti111', 'feat111', 'floor111'),
        ('ti222', 'feat222', 'floor222'),
        ('ti333', 'feat333', 'floor333'))
result = [dict(zip(col_name, item)) for item in data]
print(result)
##[{'time': 'ti111', 'feature': 'feat111', 'floor': 'floor111'}, {'time': 'ti222', 'feature': 'feat222', 'floor': 'floor222'}, {'time': 'ti333', 'feature': 'feat333', 'floor': 'floor333'}]
description = (('time', 12, None), ('feature', 252, None), ('floor', 253, None))
col_name = [x[0] for x in description]
print(col_name)
##['time', 'feature', 'floor']

 

3.字典套列表

两种字符串作为字典键,{}.format(),和str()进行处理:

storeComRes['{}'.format(diff)] = sql_feature  

storeComRes[str(diff)] = sql_feature 

如果生产环境下,会出现重复的键,例如’diff‘这个键后来再次出现,会覆盖原先的数据结构,所以这样最好{'diff':1.21},

所以推荐一种新的写法,就是字典里面套列表,

storeComRes.setdefault(str(diff),[]).append(sql_feature)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值