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

Python中提取嵌套列表公共值及TypeError报错解决

解决获取list1和list2公共值的问题

咱们先拆解下你遇到的问题,再一步步修正代码:

问题根源

  1. 列表索引错误:你的a是一个包含两个字典的列表,不能直接用字典的键(比如你写的list_2015)去索引列表,得先通过整数索引拿到对应的字典,再取键对应的值。
  2. 数据格式问题:每个字典的value是一个包含单个逗号分隔字符串的列表(比如['35,36,...']),不是直接的数字列表,没法直接转集合求交集,得先把字符串拆分并转成整数。

修正后的代码

# 原始数据
a = [{'list1': ['35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52']}, {'list2': ['1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52']}]

# 提取并处理list1的数字集合
list1_nums = set(int(num) for num in a[0]['list1'][0].split(','))
# 提取并处理list2的数字集合
list2_nums = set(int(num) for num in a[1]['list2'][0].split(','))

# 求交集
common_values = list1_nums.intersection(list2_nums)
print(common_values)

运行结果

{35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52}

代码解释

  • a[0]['list1'][0]:先通过a[0]拿到第一个字典,再用['list1']取到包含字符串的列表,最后[0]取出里面的逗号分隔字符串。
  • split(','):把字符串按逗号拆分成单个数字字符串的列表。
  • int(num):将每个字符串转成整数,再用生成器表达式转成集合。
  • intersection():求两个集合的公共元素,就是你要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:47:23