Python拼接字典中列表元素时报list indices must be integers错误如何解决
错误原因
报错和循环变量i、j的类型无关,问题出在字符串拼接的后半段代码:
你写的str(['A']['A.B'][j])遗漏了字典变量前缀a,Python会把开头的['A']识别为新建的仅包含字符串'A'的列表,后续你尝试用字符串'A.B'索引这个列表,自然触发类型错误。
修复方案
1. 直接修正原代码的拼写错误
如果你的需求是输出两个列表元素的笛卡尔积拼接结果,直接补上变量前缀即可:
a = {'A': {'A.A': [1.0, 2.0, 3.0], 'A.B': [4.0, 5.0, 6.0]}} for i in range(len(a['A']['A.A'])): for j in range(len(a['A']['A.B'])): name = str(a['A']['A.A'][i]) + '+' + str(a['A']['A.B'][j]) print(name)
2. 更简洁的对应位置拼接写法
如果你的需求是两个列表相同下标位置的元素两两拼接(两个列表长度一致时),可以用zip函数简化循环逻辑:
a = {'A': {'A.A': [1.0, 2.0, 3.0], 'A.B': [4.0, 5.0, 6.0]}} for num1, num2 in zip(a['A']['A.A'], a['A']['A.B']): print(f"{num1}+{num2}")
内容的提问来源于stack exchange,提问作者Thaumaturge_void
相关产品推荐
相关产品推荐

