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)
请显示您为尝试解决此任务而编写的代码。