我是Python初学者。我需要做一个连接组。我尝试了不同的方法,但无法做出最终决定。
我有一个数据集:
A Apple
A Orange
A Peach
B Apricot
C Banana
B Cherry
C Blueberry
我需要将其分组为以下格式
A Apple, Orange, Peach
B Apricot, Cherry
C Banana, Blueberry
任何想法。非常感谢您的帮助。
答案 0 :(得分:1)
我相信这可以解决您的问题:
with open('list.txt', 'r') as f:
file = f.read()
f.close()
words = {}
for line in file.split('\n'):
letter, word = line.split(' ')
try:
words[letter] = words[letter] + [word]
except KeyError:
words.update({letter: [word]})
# id = 'A' or 'B' Etc.
for id, word in sorted(words.items()):
print('{0} {1}'.format(id, word))
<强>输出:强>
A ['Apple', 'Orange', 'Peach']
B ['Apricot', 'Cherry']
C ['Banana', 'Blueberry']
它在做什么:
.txt
文件并读取它。完成后关闭它。letter
和word
。word
中的字母键处添加words
值列表。答案 1 :(得分:0)
以下是使用collections.defaultdict
:
from collections import defaultdict
with open('input') as f:
d = defaultdict(list)
for key, word in (line.split() for line in f):
d[key].append(word)
for k in sorted(d):
print('{} {}'.format(k, ', '.join(sorted(d[k]))))
<强>输出强>
A Apple, Orange, Peach B Apricot, Cherry C Banana, Blueberry
defaultdict
使得将项目收集到列表中比管理标准词典要容易得多,因为在添加项目之前,您无需检查项目中是否已存在密钥。
另一种选择是使用itertools.groupby
,但这需要数据按顺序排列,因此需要在使用前对文件进行排序。