将字典列表中的字符串更改为整数
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 的值为空
我的列表如下所示:
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 的值为空