You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字典中列表类型值里的字符串数字转换为整数?

解决方案:保留列表结构,仅转换字符串数字为整数

嘿,你遇到的问题很明确——原来的代码直接把字典的值替换成了单个整数,完全丢失了原有的列表结构和第一个元素!咱们来快速修正这个问题:

问题分析

你之前写的 d[i] = int(v[1]) 是把每个键对应的整个值替换成了转换后的整数,自然就没了原列表里的'paper'这类元素和列表结构。我们要做的是保留列表,只修改列表中的第二个字符串数字。

方法一:循环修改原字典

遍历字典的每个键值对,重新构造列表:保留第一个元素,把第二个字符串转成整数再放回去:

d = {'12345': ['paper', '3'], '67890': ['pen', '78'], '11223': ['olive', '100'], '33344': ['book', '18']}

for key, value in d.items():
    # 保留第一个元素,将第二个字符串转换为整数后组成新列表
    d[key] = [value[0], int(value[1])]

print(d)

运行结果完美符合你的期望:

{'12345': ['paper', 3], '67890': ['pen', 78], '11223': ['olive', 100], '33344': ['book', 18']}

方法二:字典推导式(更简洁的Pythonic写法)

如果喜欢紧凑的代码,一行字典推导式就能搞定:

d = {k: [v[0], int(v[1])] for k, v in d.items()}

逻辑和上面的循环完全一致,只是写法更简洁。

额外小提示

如果你的字典可能存在异常数据(比如列表长度不足2、第二个元素不是可转换的数字字符串),可以加个简单判断避免报错:

for key, value in d.items():
    if len(value) >= 2 and value[1].isdigit():
        d[key] = [value[0], int(value[1])]

这样能防止因数据格式问题触发ValueError或IndexError。

内容的提问来源于stack exchange,提问作者st040506

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 13:43:11