将字典列表中的字符串更改为整数

Changing a string to integer in a list of dictionaries

我的列表如下所示:

print(dataset[0:2])

给出:

[{'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'}]

但是我想将 'cases' 和 'population2019' 中的值更改为整数而不是字符串。

我已使用此代码将字符串更改为整数

for i in dataset:        #Changes the value of multiple keys to integers instead of string 
    for key in i:
        i['cases'] = int(i['cases'])
        i['population2019'] = int(i['population2019'])

它确实将 'cases' 的值更改为整数而不是字符串,但它不适用于 'population2019',因为我认为它是一个大整数('38041757')。

错误是:

ValueError: invalid literal for int() with base 10: ''

你只需要这个:

for i in dataset:         
    i['cases'] = int(i['cases']) if i['cases'] !='' else 0
    i['population2019'] = int(i['population2019']) if i['population2019']!='' else 0

我相信你有这个错误,因为当你尝试转换它时 population2019 是一个空字符串 ('')

试试这个:

dataset['cases'] = dataset['cases'].astype(int)
dataset['population2019'] = dataset['population2019'].astype(int)

希望对你有用。

你的代码是完美的 fine.As GProst 说错误来了因为如果 i['cases'] 或 i['population2019'] 是 empty.Just 在转换前添加条件.

for i in dataset:        #Changes the value of multiple keys to integers instead of string 
    if i['cases'] != '':
        i['cases'] = int(i['cases'])
    if i['population2019'] != '':
        i['population2019'] = int(i['population2019'])

数据集中的 population 字典值为空,因为您的代码无需更改任何内容即可运行。 因此您可以使用错误处理来阻止您的代码不 运行 和几乎更改所有值如:

for i in dataset:        #Changes the value of multiple keys to integers instead of string
    for key in i:
        i['cases'] = int(i['cases'])
        if i['population2019']=='':
            i['population2019'] = int(2)
        else:
            i['population2019']=int(i['population2019'])

然后您可以通过搜索值“2”来找到 population2019 的值为空