【问题标题】:python: how to check if a value exist in any element of a dict while the values of the dict are lists?python:当字典的值是列表时,如何检查字典的任何元素中是否存在值?
【发布时间】:2020-10-06 22:23:40
【问题描述】:

我有一个字典,它的值是一个列表,例如A = {'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]},我想检查字典的值中是否存在值2。由于A.values() 将返回一个列表,其中每个元素都是一个列表,因此2 in A.values() 将始终返回false。有没有办法在不循环每个值的情况下解决这个问题?

【问题讨论】:

  • 由于它是一个嵌套列表,您必须遍历内部列表。所以要么迭代,要么展平列表并检查成员资格2 in chain.from_iterable(A.values())

标签: python


【解决方案1】:

您必须以自己或内置功能循环一些的方式。这是值的显式循环和使用in 的“隐藏”循环。

any(2 in v for v in A.values())

请注意,这仅在必要时进行,一旦找到值就会停止搜索。并且只占用 O(1) 空间。

【讨论】:

    【解决方案2】:

    一个简单的方法是展平值列表:

    A = {'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]}
    
    print(2 in [item for sublist in list(A.values()) for item in sublist])
    
    True
    

    【讨论】:

    • if else 没有多大用处
    • 是的,我正在努力压缩它,我们开始吧:)
    • 没问题!感谢您的提问!
    【解决方案3】:

    你可以试试这个。

    A = {'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]}
    
    for key in A:
        if 2 in A.get(key):
            print(True)
    

    可以按键循环,通过.get()函数检查其值

    【讨论】:

      猜你喜欢
      • 2011-11-03
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多