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

Python中能否同时使用字符串与整数进行数组索引?

Python中字符串/整数能否用于数组索引?

先直接给你明确结论:

  • 列表(也就是你说的“数组”)只能用整数索引——列表是有序的序列集合,必须用非负整数(或者负整数,用来从末尾倒着数)来访问元素,要是用字符串当索引,直接就会抛出TypeError哦。
  • 字典可以用整数、字符串这类不可变类型当键——字典是键值对结构,只要键是不可变的(比如整数、字符串、元组)都能用来取值,这也是你例子里list_2的用法。

接下来看看你的代码问题:
你说list_2是个以整数ID为键的字典,比如这样:

list_2 = {
    1000: {'iscrowd': 0, 'image_id': 438346, 'category_id': 1},
    1001: {'iscrowd': 0, 'image_id': 438345, 'category_id': 2}
}

但你写的循环代码有个明显的错误:

i = 0
for id in list_2:
    list_1[i]['First'] = list_2[id]['First']
    list_2[i]['Second'] = list_2[id]['Second']  # 这里会报错!
    i = i + 1

问题出在list_2[i]这一行:list_2的键是1000、1001这类ID,而i是从0开始的整数,字典里根本没有0、1这些键,运行起来肯定会抛出KeyError。

要是你的需求是把list_2里的每个值对应到list_1的对应位置,同时给list_2的每个元素加上Second字段,那可以这么改:

方式1:用enumerate遍历字典的键值对(更Pythonic)

# 如果list_1是空的,动态添加元素
list_1 = []
for idx, (id, item) in enumerate(list_2.items()):
    # 把list_2里的对应值放到list_1里
    list_1.append({'First': item['category_id']})  # 这里假设你要取category_id当First的值,按需调整
    # 给当前list_2的元素添加Second字段
    item['Second'] = item['image_id']  # 同理,按需调整值

方式2:保持你原来的循环结构,修正键的使用

i = 0
for id in list_2:
    list_1[i]['First'] = list_2[id]['category_id']
    # 别用list_2[i],要用遍历到的id来访问字典元素!
    list_2[id]['Second'] = list_2[id]['image_id']
    i += 1

另外,要是你确实需要用字符串当索引,那别用列表,改用字典就行。比如list_1如果是字典,就可以用字符串(或者把ID转成字符串)当键:

list_1 = {}
for id in list_2:
    list_1[str(id)] = {'First': list_2[id]['category_id']}

最后再划个重点:

  • 列表只能用整数索引,字符串不行;
  • 字典支持多种不可变类型当键;
  • 你的代码核心错误是误用了字典的键,要用遍历到的id而非循环变量i来访问list_2的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:30:38