打印/阅读从csv文件创建的词典时遇到问题

kqhtkvqz  于 2023-03-10  发布在  其他
关注(0)|答案(1)|浏览(127)

我需要从一个csv文件创建一个字典,虽然我没有得到任何错误时,运行我的代码,我的输出出来空白.这是我的代码看起来像:

def make_happy_dict():
        filename = "happiness.csv"
        happy_dict = {}
        with open(filename, 'r') as infile:
            csv_happy = csv.reader(infile)
            infile.readline()
            for line in csv_happy:
              line = line.strip("\n")
              line[0], line[2] = line.split(",")
              happy_dict[line[0]] = line[2]
        print(line[0], line[2])

这是非常初学者/基本的,所以如果你有任何建议和解释,我会非常感谢!我不知道如果你需要的csv数据,所以让我知道,如果你这样做,我会更新:)

piah890a

piah890a1#

我想你还没有调用这个函数。如果你调用了,它会失败。csv.reader会为你拆分行。你迭代保存单行列值的列表。如果你尝试line.strip("\n"),你会得到一个异常,因为line是一个列表,而不是一个字符串。你可以把filename传递给函数,而不是硬编码它,并在完成后返回happy dictionary

def make_happy_dict(filename):
    happy_dict = {}
    with open(filename, newline="") as infile:
        infile.readline()
        csv_happy = csv.reader(infile)
        for row in csv_happy:
          happy_dict[row[0]] = row[2]
    return happy_dict
    
happiness = make_happy_dict("happiness.csv")
print(happiness)

您可以在一个步骤中创建和填充字典,而不是使用for循环

def make_happy_dict(filename):
    with open(filename, newline="") as infile:
        infile.readline()
        return {row[0]:row[2] for row in csv.reader(infile)}

有许多方法可以格式化输出数据。也许最简单的方法是打印每一项:

for country, value in happiness.items():
    print(f"{country} {value}")

或者创建具有多行的单个字符串

display = "".join(f"{country} {value}" for country,value in happiness.items()}

这只是几种可能性。

相关问题