Python 3.x 如何从数据创建字典

Python 3.x 如何从数据创建字典,python-3.x,dictionary,file-io,Python 3.x,Dictionary,File Io,我试图创建一个函数,为每天创建一个字典(第一列),并记录当天的反馈 我遇到的主要问题是如何发现这是新的一天,以及如何创建新的词典 以下是数据: 0 21 M 34 P 0 22 F 12 N 0 28 M 67 P 1 18 M 22 P 1 21 F 88 P 1 34 F 97 N 2 55 M 21 P 2 65 M 32 P 2 33 F 55 N 2 48 F 7

我试图创建一个函数,为每天创建一个字典(第一列),并记录当天的反馈

我遇到的主要问题是如何发现这是新的一天,以及如何创建新的词典

以下是数据:

0   21  M   34  P
0   22  F   12  N
0   28  M   67  P
1   18  M   22  P
1   21  F   88  P
1   34  F   97  N
2   55  M   21  P
2   65  M   32  P
2   33  F   55  N
2   48  F   7   P

csv.reader
+
集合的组合。defaultdict
+
集合。计数器
对象:

from collections import defaultdict, Counter
import csv
from io import StringIO

data = '''0   21  M   34  P
0   22  F   12  N
0   28  M   67  P
1   18  M   22  P
1   21  F   88  P
1   34  F   97  N
2   55  M   21  P
2   65  M   32  P
2   33  F   55  N
2   48  F   7   P'''

d = defaultdict(Counter)
reader = csv.reader(StringIO(data), skipinitialspace=True, delimiter=' ')
for row in reader:
    d[row[0]][row[4]] += 1
d = {int(k): dict(v) for k, v in d.items()}

print(d)
输出:

{0: {'P': 2, 'N': 1}, 1: {'P': 2, 'N': 1}, 2: {'P': 3, 'N': 1}}

另一种解决方案,不使用任何库:

txt = '''

0   21  M   34  P
0   22  F   12  N
0   28  M   67  P
1   18  M   22  P
1   21  F   88  P
1   34  F   97  N
2   55  M   21  P
2   65  M   32  P
2   33  F   55  N
2   48  F   7   P

'''

d = {}
for day, *_, v in (i for i in map(str.split, txt.splitlines()) if i):
    d.setdefault(day, {}).setdefault(v, 0)
    d[day][v] += 1

print(d)
印刷品:

{'0': {'P': 2, 'N': 1}, '1': {'P': 2, 'N': 1}, '2': {'P': 3, 'N': 1}}

要从文件加载数据,可以使用以下示例:

with open('sample.txt', 'r') as f_in:
    d = {}
    for day, *_, v in (i for i in map(str.split, f_in) if i):
        d.setdefault(day, {}).setdefault(v, 0)
        d[day][v] += 1

print(d)

请显示您为尝试解决此任务而编写的代码。