как сделать новый, чтобы собрать результаты функции? - PullRequest
0 голосов
/ 05 октября 2018
 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}]
  1. Я хочу создать новый список: s = [сумма "a"], например, как [14,0,14], порядок по r_gr и r = ["r_gr"], как как [1,2,3] и e = [первое число «e»] как [1,1,2,1,1,2]

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Или используйте 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]
0 голосов
/ 05 октября 2018

Я бы использовал библиотеку панд, потому что, похоже, их легко решить, если положить их в таблицу:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...