假如从数据库得到这样一个字典列表的嵌套
[{'姓名': '李华', '数学': 86, '英语': 73, '物理': 91, '化学': 84},
{'姓名': '张明', '数学': 85, '英语': 74, '物理': 90, '化学': 84},
{'姓名': '华李', '数学': 84, '英语': 75, '物理': 91, '化学': 84},
{'姓名': '明张', '数学': 83, '英语': 76, '物理': 90, '化学': 84},
{'姓名': '小李', '数学': 82, '英语': 77, '物理': 91, '化学': 84}]
想通过一个整体的for循环,得到下面的各门分数的列表组,但不希望每个字段写一个循环,也就是说当数据库多出一个字段例如“生物”时,代码不用人为地进行调整和添加,应该如何实现?
[86,85,84,83,82]#数学
[73,74,75,76,77]#英语
[91,90,91,90,91]#物理
[84,84,84,84,84]#化学
按照键名称合并到数组中
def groupKey(lst):
keys=lst[0].keys()
dict={}
for key in keys:
dict[key]=[]
for item in lst:
for key in keys:
dict[key].append(item.get(key))
return dict
lst= [{'姓名': '李华', '数学': 86, '英语': 73, '物理': 91, '化学': 84},
{'姓名': '张明', '数学': 85, '英语': 74, '物理': 90, '化学': 84},
{'姓名': '华李', '数学': 84, '英语': 75, '物理': 91, '化学': 84},
{'姓名': '明张', '数学': 83, '英语': 76, '物理': 90, '化学': 84},
{'姓名': '小李', '数学': 82, '英语': 77, '物理': 91, '化学': 84}]
dict=groupKey(lst)
print(dict)
你题目的解答代码如下:
li=[{'姓名': '李华', '数学': 86, '英语': 73, '物理': 91, '化学': 84},
{'姓名': '张明', '数学': 85, '英语': 74, '物理': 90, '化学': 84},
{'姓名': '华李', '数学': 84, '英语': 75, '物理': 91, '化学': 84},
{'姓名': '明张', '数学': 83, '英语': 76, '物理': 90, '化学': 84},
{'姓名': '小李', '数学': 82, '英语': 77, '物理': 91, '化学': 84}]
keys=list(li[0].keys())
keys.remove("姓名")
for k in keys:
li2 = [x[k] for x in li]
print(li2,k)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
可以这样
for j in lst[0]:
if j != '姓名':
print(j, ': ', [i[j] for i in lst])