如何打印从列表列表中找到的列表名称?

时间:2019-05-23 17:02:14

标签: python

我正在尝试执行该程序,该程序告诉我可以在哪个列表中找到所需的“零件”或值。我需要获取在其中找到零件的列表的名称。每个列表都是零件的位置,我制作了一个列表列表,以循环遍历所有列表。

list1=[1,5,8,3,9]
list2=[18,56,82,31,91]
list3=[10,51,2,4,70]
lists=[list1, list2, list3]

def lookPart():
    part = int(input("What part are you looking for? "))
    for l in lists:
        for i in l:
            if i==part:
                print("Your part is here: ", l)

while 1:
    lookPart()
    print("")

假设我正在寻找第5部分:

我希望它能打印:

  

您的位置在这里:list1

但是我得到了:

  

您的位置在这里:[1,5,8,3,9]

编辑:谢谢所有建议使用字典的人。我会这样做,但是有没有办法使用循环创建字典?我将处理数百个列表,因此手动制作字典将非常耗时。

2 个答案:

答案 0 :(得分:2)

您可以使用字典:

list_dict = {'list_1': [1,5,8,3,9], 'list_2': [18,56,82,31,91], 'list_3': [10,51,2,4,70]}
search_value = int(input('What value are you looking for? '))
for key, value in list_dict.items():
  if search_value in value:
    print(f'Your search value of {search_value} was found in {key} i.e. {value}')

用法示例:

What value are you looking for? 5
Your search value of 5 was found in list_1 i.e. [1, 5, 8, 3, 9]

注意:使用in来检查列表中是否存在某个元素会在内部使用循环,因此您不必像当前所做的那样显式检查每个元素。

答案 1 :(得分:1)

@pault建议;下面是脚本。使用列表名称作为关键字,将所有列表放入字典中。然后打印键而不是值。

list1=[1,5,8,3,9]
list2=[18,56,82,31,91]
list3=[10,51,2,4,70]
lists={'list1':list1, 'list2':list2, 'list3':list3}

def lookPart():
    part = int(input("What part are you looking for? "))
    for k, l in lists.items():
        for i in l:
            if i==part:
                print("Your part is here: ", k)

while 1:
    lookPart()
    print("")