t = [{"a" :11, "r_gr" :1, "gn":"F", "e" :18},
{"a" :13, "r_gr" :3, "gn":"M", "e" :19},
{"a" :1, "r_gr" :3, "gn":"M", "e" :29},
{"a" :0, "r_gr" :2, "gn":"F", "e" :18},
{"a" :0, "r_gr" :2, "gn":"M", "e" :18},
{"a" :3, "r_gr" :1, "gn":"F", "e" :25}]
答案 0 :(得分:2)
或使用itertools
(内置软件包)和一些列表推导(我建议采用这种方式):
import itertools
t.sort(key=lambda x: x['r_gr'])
a = [sum(int(item['a']) for item in group) for key, group in itertools.groupby(t, key=lambda x: x['r_gr'])]
r_gr = sorted(set([i['r_gr'] for i in t]),key=[i['r_gr'] for i in t].index)
e = [int(str(i)[0]) for i in [x['e'] for x in t]]
print(a)
print(r_gr)
print(e)
输出:
[14, 0, 14]
[1, 2, 3]
[1, 2, 1, 1, 1, 2]
答案 1 :(得分:0)
我会使用pandas库,因为如果将它们放在表中,看起来很容易解决:
import pandas as pd
df = pd.DataFrame(t)
s = df.groupby("r_gr").sum().tolist()
r = df["r_gr"].sort_values().drop_duplicates().tolist()
e = df["e"].astype(str).str.slice(0, 1).astype(int).tolist()