从 python 中的列表中获取通用值

问题描述 投票:0回答:2

我有以下清单:

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和list2中取出共同的值。我已经写了

x = set(a[list_2015]).intersection(a[list_2016])

但它抛出错误:

TypeError: list indices must be integers or slices, not tuple

我想要的输出是:

{35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52}
python python-3.x list set
2个回答
3
投票

这是一种方法:

res = set(map(int, a[0]['list1'][0].split(','))) & \
      set(map(int, a[1]['list2'][0].split(',')))

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

注意

&
运算符是
set.intersection
的语法糖。


0
投票

这确实很旧,但 Stackoverflow 将我引导到这里,但答案实际上并没有回答问题。

你的问题是

a
是一个列表,其中每个元素都是一个包含一个元素的字典。这几乎肯定不是您想要的。但就其本身而言,您只需要正确访问
a
的部分即可。

set(a[0]['list1']).intersection(set(a[1]['list2']))
© www.soinside.com 2019 - 2024. All rights reserved.