【问题标题】:Python 3.5: search different values in a listPython 3.5:在列表中搜索不同的值
【发布时间】:2017-04-20 13:45:54
【问题描述】:

我有一个清单:

myList = [abc123, def456, ghi789, xyz999]

我需要根据这个允许值的“子列表”在 myList 中搜索特定值:

allowed = [abc123, xyz999]

编辑:我需要检查 myList 是否包含 allowed 中的值

我已经知道如何在列表中搜索特定的子字符串,但我真的不明白如何对“子列表”做同样的事情。

提前感谢您的帮助。

【问题讨论】:

  • “搜索”是什么意思?您要检查myList 是否包含allowed 中的值吗?或者您想在myList 中找到他们的索引?请将预期的输出添加到问题中。
  • 是的,我想检查 myList 是否包含 allowed 中的值。
  • @PantsuJo 那么预期的输出是什么? [True, True] 或者只是 True 或者别的什么?
  • 只是“真”,确认允许的值存在于 myList 中。

标签: python string list search


【解决方案1】:

我不确定您要达到什么目的,但我认为您的意思是查看允许的值是否在您的列表中。所以试试这个:

myList = ['abc123', 'def456', 'ghi789', 'xyz999']
allowed = ['abc123', 'xyz999']

for i in myList:
    if i in allowed:
        print("{0} in the list".format(i))

看了你的cmets,问题有点含糊, 我使用字典制作了一个解决方案来存储 allowed 的值并检查它们是否都在 myList 中

myList = ['abc123', 'def456', 'ghi789', 'xyz999']
allowed = {'abc123' : False, 'xyz999' : False}

for i in myList:
    if i in allowed:
        allowed[i]=True

print((all(value == True for value in allowed.values())))

【讨论】:

  • 完美的解决方案,为我工作!抱歉我的解释不够清楚!
【解决方案2】:

你可以使用set.issubset:

>>> set(allowed).issubset(myList)
True

或者,如果您的值不可散列,all 带有理解:

>>> all(value in myList for value in allowed)
True

【讨论】:

    【解决方案3】:
    for value in myList:
        if value in allowed:
            #dosomething
    

    【讨论】:

      【解决方案4】:

      假设字符串列表(即可散列):

      set(a).intersect(set(b)) 产生通用元素

      如果只需要布尔值,请使用issubset 方法: Python - verifying if one list is a subset of the other

      对于单个项目搜索查找、索引 Python: Find in list

      【讨论】:

        猜你喜欢
        • 2022-01-19
        • 2023-02-11
        • 1970-01-01
        • 1970-01-01
        • 2021-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多