【问题标题】:How to convert value in dictionary from string to int如何将字典中的值从字符串转换为int
【发布时间】:2021-05-02 09:18:52
【问题描述】:

我有一个字典列表,其中键和值都是字符串。 我正在从 CSV 文件导入数据。 字典如下所示:

{'1A': '1',
 '1B': '1',
 '1C': '2'}

我想将值更改为整数。

我已经四处寻找解决方案,但似乎没有找到任何可行的方法。

这是我的代码(列表称为“买家”):

for i in buyers:
    for k, v in i.items():
        i[v] = int(i[v])

我收到此错误:

i[v] = int(i[v])

KeyError: '1'

我不知道该怎么做,因为它说我的错误是“1”,在我看来它应该能够转换为 int。

【问题讨论】:

  • 您在作业中使用该值作为键
  • 使用键作为索引:i[k]
  • 你的意思是i[k] = int(i[v]) 吗? k 是你的钥匙,v 是你的价值。您正在尝试使用 value 作为其键在字典中查找

标签: python string dictionary integer


【解决方案1】:

您可以使用列表和字典推导。

buyers = [
    {'1A' : '1', '1B' : '1', '1C' : '2'},
    {'2A' : '2', '2B' : '4', '2C' : '3'}
]


result = [
    {key: int(val) for key, val in d.items()}
    for d in buyers
]

print(result)

输出

[{'1A': 1, '1B': 1, '1C': 2}, {'2A': 2, '2B': 4, '2C': 3}]

【讨论】:

  • 此方法用于将值转换为整数,但它只会重复打印最后一个字典 5 次(作为参考,我总共有 54 个字典)输出:[{1C': 1, ' 2C': 1, '3E': 1, '产品编号': 27, '周': 2},... X 5
  • 这很奇怪,因为建议的方法会创建一个新组合字典的全新列表,而键和值是从原始字典中获取的。您可以查看原始buyers 列表中的重复项吗?
  • 是的,对不起,我不清楚,有很多重复的,否则我会把它们都放在一个列表中。所以我假设正在发生的事情是字典中的值正在被重写。对于每个字典,键是 {'1A','1B','1C','1D','1E','2A',.....,'3C'},很可能有很多键具有相同的值
【解决方案2】:

你需要把i[v] = int(i[v])改成i[k] = int(v)

dict1  = {'1A' : '1', '1B' : '1', '1C' : '2'} 

for k, v in dict1.items():
    dict1[k] = int(v)
print(dict1 )

输出:

{'1A': 1, '1B': 1, '1C': 2}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    相关资源
    最近更新 更多