如何使用列表的另一个元素查找嵌套列表的元素

时间:2019-06-02 04:01:27

标签: python

给出一个类似于下面的列表,我希望能够检查嵌套列表的第二个元素被赋予嵌套列表的第一个元素。 (在不同的嵌套列表中不会重复出现相同索引的元素-意思是:不会有“苹果”作为一个以上嵌套列表中的第一个元素) 例如:我想得到结果“ peach”,知道“ orange”是嵌套列表的第一个元素,但不知道[“ orange”,“ peach”]是列表Example的第二个元素。

Example = [["apple", "banana"], ["orange", "peach"], ["strawberry", "blueberry"]]

我尝试使用.index()函数,但是它仅适用于列表的整个元素(在本例中为["orange", "peach"]-它告诉我“ orange”不是如果我尝试Example.index("orange"),则为列表中的元素。

5 个答案:

答案 0 :(得分:1)

尝试一下:

Example = [["apple", "banana"], ["orange", "peach"], ["strawberry", "blueberry"]]
q = "orange"
res = [m[1] for m in Example if m[0]==q][0]
if len(res) > 0:
    print(res[0])
#Result: "peach"

答案 1 :(得分:1)

类似以下内容将为您提供子列表的所有第二个元素的列表,这些列表的第一个元素与给定的搜索词/元素匹配;不知道这是否正是您要寻找的东西:

nested_list = [["apple", "banana"], ["orange", "peach"], ["strawberry", "blueberry"]]
search_word = 'orange'
results = [sub_list[1] for sub_list in nested_list if sub_list[0] == search_word]

结果:

['peach']

如果您还要求子列表的索引具有匹配的第一个索引,则可以进行以下更改:

nested_list = [["apple", "banana"], ["orange", "peach"], ["strawberry", "blueberry"]]
search_word = 'orange'
results = [(i, nested_list[i][1]) for i in range(len(nested_list)) if nested_list[i][0] == search_word]

结果:

[(1, 'peach')]

答案 2 :(得分:1)

根据说明,您应该使用字典。前一个元素是唯一键,后一个元素是值。查找将更快。

dict()可以使用两个项目的子列表来构造:

>>> Example = [["apple", "banana"], ["orange", "peach"], ["strawberry", "blueberry"]]
>>> d = dict(Example)
>>> d['orange']
'peach'

答案 3 :(得分:0)

这是一种方法。循环浏览外部列表中的每个元素,搜索“橙色”,并请求宽恕,如果您在当前项目中未看到它。 如果找不到'orange'或如果'orange'是内部列表中的最后一个元素,则得到None

这将返回“橙色”的第一个发现,但可以修改以返回所有发现的列表。

element = None
for item in Example:
    try:
        idx = item.index('orange')
        if idx < len(item)-1:
            element = item[idx+1]
        break
    except ValueError:
        pass

答案 4 :(得分:0)

Example = [["apple", "banana"], ["orange", "peach"], ["strawberry", 
"blueberry"], 
       ["mango", "ananas"], ["limon", "blueberry"]]
target = "mango"
index1 = 0
index2 = 0
for i in Example:
index1+=1
for j in i:
    index2+=1 
    if(not (index2%2 == 0) and j == target): #check only first  element of 
#nested list
        print(Example[index1-1][1])

如果我做对了,那就可以了。