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

如何将含嵌套字典的Python字典字符串键转为整数键?

解决字典键从字符串转整数的问题

你原来的代码无效,是因为循环中拿到的i是原字典键值对的副本——修改这个副本不会对原字典产生任何影响,循环结束后自然看不到变化。

下面是几种可行的解决方法:

方法1:字典推导式(推荐,简洁高效)

直接生成一个新字典,遍历原字典的键值对时把字符串键转为整数:

dictionary = {
    "0": {"name": "gary", "last_name": "john", "age": 13},
    "1": {"name": "larry", "last_name": "boyle", "age": 10},
    "2": {"name": "banji", "last_name": "buas", "age": 20}
}

new_dict = {int(key): value for key, value in dictionary.items()}

执行后new_dict的键就是int类型,和原始数据结构一致,直接用这个新字典就能通过单元测试。

方法2:原地修改原字典(不推荐,但适合必须保留原字典对象的场景)

如果一定要修改原字典而不是生成新字典,需要先把所有待转换的键存成列表(避免循环时字典结构变化引发迭代错误),再逐个替换:

# 先把原字典的键转成列表,防止循环中字典大小变化报错
keys_to_convert = list(dictionary.keys())
for key in keys_to_convert:
    # 只处理数字字符串类型的键
    if isinstance(key, str) and key.isdigit():
        value = dictionary.pop(key)  # 取出原键对应的值并删除原键
        dictionary[int(key)] = value  # 用整数键存回值

额外建议:在CSV读取阶段直接处理

如果这个字典是从CSV读取来的,更高效的方式是读取时就把键转为整数,不用事后再处理整个字典。比如用csv模块读取时:

import csv

result_dict = {}
with open('your_project.csv', 'r', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row_num, row in enumerate(reader):
        # 假设你用行号作为键,或者根据CSV里的主键列转换
        key = int(row_num)  # 或者 int(row['id']),根据你的CSV结构调整
        # 把行数据存入新字典,键为整数类型
        result_dict[key] = {
            "name": row["name"],
            "last_name": row["last_name"],
            "age": int(row["age"])  # 注意年龄也可能是字符串,按需转成int
        }

这样读取完成后直接得到符合要求的字典,省去后续转换步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:31:21