擅长:python、mysql、java
<p>对于每行,找到3个值,然后将它们添加到dict结构中</p>
<pre><code>from pathlib import Path
result = {}
for row in Path("test.txt").read_text().splitlines():
subject_type, subject, score = row.split(", ")
if subject_type not in result:
result[subject_type] = {'name': [], 'score': []}
result[subject_type]['name'].append(subject)
result[subject_type]['score'].append(int(score))
</code></pre>
<hr/>
<p>您可以通过使用<code>defaultdict</code>来简化它,如果密钥还不存在,它将创建映射</p>
<pre><code>result = defaultdict(lambda: {'name': [], 'score': []}) # from collections import defaultdict
for row in Path("test.txt").read_text().splitlines():
subject_type, subject, score = row.split(", ")
result[subject_type]['name'].append(subject)
result[subject_type]['score'].append(int(score))
</code></pre>
<hr/>
<p>使用pandas.DataFrame</strong>可以直接生成格式化数据并输出所需格式</p>
<pre><code>import pandas as pd
df = pd.read_csv("test.txt", sep=", ", engine="python", names=['key', 'name', 'score'])
df = df.groupby('key').agg(list)
result = df.to_dict(orient='index')
</code></pre>