我是编程新手,需要一些帮助。我有一个包含很多名称和爱好的文本文件,看起来像这样:


  杰克:工艺
  
  彼得:远足
  
  温迪:游戏
  
  莫妮卡:网球
  
  克里斯:折纸
  
  苏菲:运动
  
  莫妮卡:设计


重复了一些名字和爱好。我正在尝试使程序显示如下内容:


  杰克:手工艺,电影,瑜伽
  
  温迪:游戏,远足,运动


到目前为止,这是我的程序,但是从末尾开始的4行是不正确的。

def create_dictionary(file):
newlist = []
dict = {}
file = open("hobbies_database.txt", "r")
hobbies = file.readlines()
for rows in hobbies:
    rows1 = rows.split(":")
    k = rows1[0] # nimi
    v = (rows1[1]).rstrip("\n") # hobi
    dict = {k: v}
    for k, v in dict.items():
        if v in dict[k]:

最佳答案

在这种情况下,我将使用defaultdict

import sys
from collections import defaultdict


def create_dictionary(inputfile):
    d = defaultdict(list)
    for line in inputfile:
        name, hobby = line.split(':', 1)
        d[name].append(hobby.strip())
    return d


with open(sys.argv[1]) as fp:
    for name, hobbies in create_dictionary(fp).items():
        print(name, ': ', sep='', end='')
        print(*hobbies, sep=', ')


您的例子给我这个结果:

Sophie: sport
Chris: origami
Peter: hiking
Jack: crafting
Wendy: gaming
Monica: tennis, design

关于python - 如何将文本文件(name1:hobby1 name2:hobby2)改成文本文件(name1:hobby1,hobby2 name2:hobby1,hobby2)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52747523/

10-13 08:47