首页 > 解决方案 > 如何将多个字典放在一个列表中

问题描述

我创建了一个字典:

new_list = {}

这使,

    {'date': '13/09/2020', 'day': '13', 'month': '9', 'year': '2020', 'cases': '35', 'deaths': '0', 
    'countriesAndTerritories': 'Afghanistan', 'countryTerritoryId': 'AF', 'countryTerritoryCode': 'AFG', 
    'population2019': '38041757', 'continent': 'Asia', 'cumulativeper1000002Weeks': '1.3090878'}
    {'date': '12/9/20', 'day': '12', 'month': '9', 'year': '2020', 'cases': '34', 'deaths': '0', 
    'countriesAndTerritories': 'Afghanistan', 'countryTerritoryId': 'AF', 'countryTerritoryCode': 'AFG', 
    'population2019': '38041757', 'continent': 'Asia', 'cumulativeper1000002Weeks': '1.22496971'}
    {'date': '11/9/20', 'day': '11', 'month': '9', 'year': '2020', 'cases': '28', 'deaths': '0', 
    'countriesAndTerritories': 'Afghanistan', 'countryTerritoryId': 'AF', 'countryTerritoryCode': 'AFG', 
    'population2019': '38041757', 'continent': 'Asia', 'cumulativeper1000002Weeks': '1.16450983'}

但现在我想把这本词典添加到列表中

dataset= [new_list] 

这使,

[{'date': '13/09/2020', 'day': '13', 'month': '9', 'year': '2020', 'cases': '35', 'deaths': '0', 'countriesAndTerritories': 'Afghanistan', 'countryTerritoryId': 'AF', 'countryTerritoryCode': 'AFG', 'population2019': '38041757', 'continent': 'Asia', 'cumulativeper1000002Weeks': '1.3090878'}]
[{'date': '12/9/20', 'day': '12', 'month': '9', 'year': '2020', 'cases': '34', 'deaths': '0', 'countriesAndTerritories': 'Afghanistan', 'countryTerritoryId': 'AF', 'countryTerritoryCode': 'AFG', 'population2019': '38041757', 'continent': 'Asia', 'cumulativeper1000002Weeks': '1.22496971'}]
[{'date': '11/9/20', 'day': '11', 'month': '9', 'year': '2020', 'cases': '28', 'deaths': '0', 'countriesAndTerritories': 'Afghanistan', 'countryTerritoryId': 'AF', 'countryTerritoryCode': 'AFG', 'population2019': '38041757', 'continent': 'Asia', 'cumulativeper1000002Weeks': '1.16450983'}]

但是我试图得到结果(所以只有“[]”在开始和结束时),因为那样我可以做数据集[0:2](否则它会给我'Nonetype'对象不可下标)和它只会给出前两个字典

[{'date': '13/09/2020', 'day': '13', 'month': '9', 'year': '2020', 'cases': '35', 'deaths': '0', 'countriesAndTerritories': 'Afghanistan', 'countryTerritoryId': 'AF', 'countryTerritoryCode': 'AFG', 'population2019': '38041757', 'continent': 'Asia', 'cumulativeper1000002Weeks': '1.3090878'},
{'date': '12/9/20', 'day': '12', 'month': '9', 'year': '2020', 'cases': '34', 'deaths': '0', 'countriesAndTerritories': 'Afghanistan', 'countryTerritoryId': 'AF', 'countryTerritoryCode': 'AFG', 'population2019': '38041757', 'continent': 'Asia', 'cumulativeper1000002Weeks': '1.22496971'},
{'date': '11/9/20', 'day': '11', 'month': '9', 'year': '2020', 'cases': '28', 'deaths': '0', 'countriesAndTerritories': 'Afghanistan', 'countryTerritoryId': 'AF', 'countryTerritoryCode': 'AFG', 'population2019': '38041757', 'continent': 'Asia', 'cumulativeper1000002Weeks': '1.16450983'}]

我的代码如下:

import csv
def read_dataset() -> List[Dict[str,str]]:
    dataset = []
    with open('covid-19.csv', 'r') as file:
        reader = csv.reader(file)
        no_head = next(reader, None)
       
        for row in reader:
            lst = [
                'date',
                'day', 
                'month', 
                'year',
                'cases', 
                'deaths', 
                'countriesAndTerritories', 
                'countryTerritoryId', 
                'countryTerritoryCode', 
                'population2019', 
                'continent',
                'cumulativeper1000002Weeks',
            ]
            new_list = {}
            for x in range(len(lst)):
                new_list[lst[x]] = row[x]
            dataset= [new_list]
            #print(dataset)
            
dataset = read_dataset()
print(dataset[0:2])

标签: pythonlistdictionary

解决方案


import csv
def read_dataset() -> List[Dict[str,str]]:
    dataset = []
    with open('covid-19.csv', 'r') as file:
        reader = csv.reader(file)
        no_head = next(reader, None)
    
        for row in reader:
            lst = [
                'date',
                'day', 
                'month', 
                'year',
                'cases', 
                'deaths', 
                'countriesAndTerritories', 
                'countryTerritoryId', 
                'countryTerritoryCode', 
                'population2019', 
                'continent',
                'cumulativeper1000002Weeks',
            ]
            new_list = {}
            for x in range(len(lst)):
                new_list[lst[x]] = row[x]
            dataset.append(new_list)
            #print(dataset)
    return dataset
            
dataset = read_dataset()
print(dataset[0:2])

不同之处在于您必须使用:

dataset.append(new_list)

functon,它在末尾追加 new_list (这是一个字典,有点混乱,注意变量名!)


推荐阅读