【问题标题】:How to compare an input() with a variable(list)如何将输入()与变量(列表)进行比较
【发布时间】:2019-06-06 17:19:15
【问题描述】:

(我在 Jupiter Notebook 5.7.8 上使用 python)

我有一个项目,其中包含 3 个列表,以及一个引用这 3 个列表的列表(list_of_lists)。 我希望我的程序接收输入,将此输入与我的“list_of_lists”的内容进行比较,如果找到匹配项,我想将匹配项存储在另一个变量中以供以后使用。

我只是在学习,所以这是我写的代码:

first = ["item1", "item2","item3"]    
second = ["item4","item5","item6"]    

list1 = [first,second]    
list2 = ["asd","asd","asd"]    
list_of_lists = [list1,list2]    

x = input("Which list are you going to use?: ")    

for item in list_of_lists:    
    if item == x:    
        match = item    
        print(match)    
        print('There was a match')    
    else:    
        print('didnt match')    

我期待一个匹配,但它总是输出“不匹配”, 我认为它无法将输入的内容与 list_of 列表中的列表进行比较。问题也是为什么以及如何正确地做到这一点(如果可能的话),谢谢。

【问题讨论】:

  • “你打算使用哪个列表?:”你的答案是什么?
  • 提示:在 for 循环的开头添加 print(item),您会发现 item 不是您认为的那样
  • 奥斯汀我给出的答案是list1,为了调用第一个列表
  • @SyntaxVoid 我明白你的意思,我上周没有太多时间,但现在我想出了一种解决方案,我会在下面的评论中提出任何帮助会很好

标签: python-3.x list jupyter-notebook


【解决方案1】:

input in python3 返回一个字符串。如果你想将它转换成一个列表,使用ast.literal_eval或json.loads或者你自己的解析方法。

list_str = input("Which list are you going to use?: ") 
user_list = ast.literal_eval(list_str)
assert isinstance(user_list, list)
...
# do your thing...

【讨论】:

  • 嗨@Yoav Glazner,这不是我希望我的节目做的。我希望将输入与列表进行比较以找到匹配项
【解决方案2】:

所以我在这里尝试了这段代码,它完成了我想要的,我不知道它是否太简陋以及是否有其他方法可以实现这一点。 在这里,我使用第二个列表来捕捉匹配的时刻,之后我将我的真实列表的值提供给该列表并从那里打印它以供使用。

我想知道是否有办法从结果中取出符号“[]”和引号'',所以我可以有一个干净的文本格式,谢谢你的帮助

first = ["item1", "item2","item3"]    
second = ["item4","item5","item6"]    

list1 = [first,second]    
list2 = ["asd","asd","asd"]    
list3 = ["qwe","qwe","qwe"]    
list_of_lists = [list1,list2,list3]    
reference_list = ["list1","list2","list3"]    
count = -1    

x = input('Which list are you going to use? ')    

for item in reference_list:    
    count += 1    
    if x == item:    
        reference_list = list_of_lists    
        print(reference_list[count])    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2018-10-07
    • 2022-11-01
    • 1970-01-01
    • 2018-09-07
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多