gpt4 book ai didi

python - 在列表中查找元素并输出子列表项

转载 作者:太空宇宙 更新时间:2023-11-03 14:17:44 25 4
gpt4 key购买 nike

我遇到了一个问题,包括在子列表中搜索特定值并在我的列表中仅输出所需的子列表。

代码将有助于理解我的问题:

list1 = [['12', '"id1"', '1'],['14', '"id1"', '1'],['16', '"id1"', '1']]
list2 = [['4', '"id8"', '1'],['6', '"id8"', '1'],['12', '"id8"', '1']]

list1_first = [int(item[0]) for item in list1]
list2_first = [int(item[0]) for item in list2]

compare = set(list1_first) & set(list2_first)

print(list1_first) # outputs: [12, 14, 16]
print(list2_first) # outputs: [4, 6, 12]
print(compare) # outputs: {12}

# find the compared value within list 1 and list 2
largelist = list1 + list2
print(largelist) # outputs: [['12', '"id1"', '1'], ['14', '"id1"', '1'], ['16', '"id1"', '1'], ['4', '"id8"', '1'], ['6', '"id8"', '1'], ['12', '"id8"', '1']]

for item in largelist:
if compare in list1:
print('Found:',item) # does not print anything
# wanted output: Found: ['12', '"id1"', '1'], Found ['12', '"id8"', '1']

我的代码没有打印任何东西,我认为这是基于每个列表中的第一个数字没有被注释为整数这一事实?您知道为什么这不起作用吗?我该如何解决?

最佳答案

您正在将集合 {12}list1 中的每个子列表进行比较,您需要查看每个子列表中是否有任何元素在集合中。

不完全确定你想要什么,但这可能更接近:

list1 = [['12', '"id1"', '1'],['14', '"id1"', '1'],['16', '"id1"',     

list1_first = [(item[0]) for item in list1]

compare = set(list1_first).intersection(ele[0] for ele in list2)

from itertools import chain

for item in chain(list1,list2):
if compare.issubset(item):
print('Found:',item)

哪些输出:

Found: ['12', '"id1"', '1']
Found: ['12', '"id8"', '1']

你可以散列一个字符串,这样它就完全没有意义地转换为一个整数。

您还可以使用字典和过滤器来遍历列表:

list1 = [['12', '"id1"', '1'],['14', '"id1"', '1'],['16', '"id1"', '1']]
list2 = [['4', '"id8"', '1'],['6', '"id8"', '1'],['12', '"id8"', '1']]


from itertools import chain
from collections import defaultdict
d = defaultdict(list)
for item in chain(list1,list2):
d[item[0]].append(item)


print(list(filter(lambda x: len(x)> 1, d.values())))

关于python - 在列表中查找元素并输出子列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31852942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com