【问题标题】:Check if any key exist from given multiple keys in a given dictionary检查给定字典中给定多个键是否存在任何键
【发布时间】:2020-02-20 17:11:13
【问题描述】:

我知道检查给定字典中是否存在多个键的最佳方法。

if {'foo', 'bar'} <= my_dict.keys():
    # True

现在我必须检查给定字典中是否存在任何键并且到目前为止:

if any(k in given_keys for k in my_dict):
    # True

我想知道是否有任何方法可以在第一种情况下使用子集进行检查。

【问题讨论】:

标签: python dictionary subset python-3.6


【解决方案1】:

使用列表压缩可以比较两个字典:

[x for x in my_dict2 if x in my_dict]

dict 的生成器总是使用键来比较两者,你需要使用 dict.items()

【讨论】:

    【解决方案2】:

    同样:

    if {'foo', 'bar'} & my_dict.keys():
        print(True)
    

    &amp; 表示相交。

    【讨论】:

    • 使用print(set() != given_keys &amp; my_dict.keys())可以更简洁
    • @MicheleBastione 不需要这样做。空集在布尔上下文中计算为 False。执行if some_set: 来检查some_set 是否为空是最pythonic 的方式。
    • 我猜是秋千和环形交叉路口。简单地打印结果将尝试打印设置的内容,而不是真/假。我想你可以对它进行布尔转换。无论如何,实际上我想你想对结果做一些比打印真/假更有趣的事情,所以这个答案有助于澄清这一点。
    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 2010-10-03
    • 2014-12-02
    • 1970-01-01
    • 2017-03-28
    • 2012-02-18
    相关资源
    最近更新 更多