生产环境(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)