【问题标题】:how do i append content of a dictionary to a list in python?如何将字典的内容附加到python中的列表?
【发布时间】:2020-06-01 00:07:37
【问题描述】:
import csv

with open('filename.csv') as csv_file:
    datarow = csv.reader(filename, delimiter=',')
    dict_places = {}
    list_places = []
    for row in datarow:
        dict_places['Continent'] = row[0]
        dict_places['Country'] = row[1]
        dict_places['Capital'] = row[2]
        print(list_places.append(dict_places))

我正在读取一个 csv 文件 filename.csv ,但没有得到如下所示的预期结果。

[{'大陆':'欧洲','国家':'西班牙','首都':'马德里'},{'大陆':'欧洲','国家':'葡萄牙','首都' : '里斯本'}', {'大陆': '欧洲', '国家': '英格兰', '首都': '伦敦'}]

【问题讨论】:

    标签: python python-3.x csv dictionary


    【解决方案1】:

    dict_places 的声明移到循环内:

    list_places = []
    for row in datarow:
        dict_places = {}
        dict_places['Continent'] = row[0]
        dict_places['Country'] = row[1]
        dict_places['Capital'] = row[2]
        print(list_places.append(dict_places))
    

    否则,您只是在每次迭代时替换同一字典中的值,最终会得到同一字典的列表

    【讨论】:

      【解决方案2】:

      您应该考虑为此使用csv.DictReader。它将为您完成艰苦的工作,并减少此类错误的可能性。您只需传入列名列表:

      import csv
      with open(path) as csvfile:
          rows = csv.DictReader(csvfile, ['Continent','Country', 'Capital'])
          list_places = [dict(row) for row in rows]
      
      print(list_places)
      

      打印:

      [{'Continent': 'Europe', 'Country': 'Spain', 'Capital': 'Madrid'},
       {'Continent': 'Europe', 'Country': 'Portugal', 'Capital': 'Lisbon'}, 
       {'Continent': 'Europe', 'Country': 'England', 'Capital': 'London'}]
      

      【讨论】:

        猜你喜欢
        • 2020-12-06
        • 1970-01-01
        • 2020-10-14
        • 1970-01-01
        • 2021-04-26
        • 1970-01-01
        • 2013-03-27
        • 2019-03-29
        • 2023-02-02
        相关资源
        最近更新 更多