繁体   English   中英

检查字典是否包含列表中的至少一个特定值

Check if dictionary contains at least one specific value out of a list

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

检查“目标”列表中的字典中是否存在至少一个特定值的最优雅方法是什么? 我过去一直在使用 or 语句,但这些可能相当长:

d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}

if 'six' in d.values() or 'eight' in d.values() or 'ten' in d.values() or 'fifteen' in d.values():
    # do something
else:
    # do something else

创建一个目标列表,然后遍历该列表以分别根据字典检查每个目标是否更好? 在这种情况下,我还需要在 if/else 块的末尾放置中断以确保它不会被多次触发:

targets = ['six', 'eight', 'ten', 'fifteen']
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}

for t in targets:
    if t in d.values():
        # do something
        break  # to ensure the thing isn't triggered multiple times
    else:
        # do something else
        break  # to ensure the thing isn't triggered multiple times

有没有推荐的方法来缩短它,或者第二个代码块是否像它一样好?

3 个回复

你可以用下一个替换它:

if any(t in d.values() for t in targets):
    pass
else:
    pass

在某些情况下,将d.values()转换为 set 并传递给附加变量会更好。

values = set(d.values())

if any(t in values for t in targets):
    # ...

将字典值和目标列表转换为集合,并对集合执行操作,在本例中为交集:

d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
targets = ['four', 'nine']

if set(d.values()) & set(targets):
    print('overlap')
else:
    print('no overlap')

使用集合的 isdisjoint() 方法比将两个集合相交会更快,因为您不需要形成结果集并且该方法将在第一个相交值上返回 False:

if {"six","eight","ten","fifteen"}.isdisjoint(d.values()):
    print("None of the values are present")
else:
    print("At least one of the values is present")
1 检查是否至少一个列表包含特定元素

有人能告诉我写这个逻辑的最短方法是什么吗? 我有两个列表list_one和list_two包含一些字母。 如果这两个列表都不包含“B”,我需要打印(真)。 我编写的代码段有效,但我很想知道是否有一种 Pythonic 的方式来编写它,而不是在同一行中重复 'B' 两次。 提前致谢,任何帮助将不 ...

2 检查字符串是否包含列表中的至少一个字符串

我正在尝试使用python进行匹配。 我有一个字符串列表(len~3000)和一个文件,我想检查文件中的每一行是否至少有一个列表中的字符串。 最直接的方法是逐个检查,但需要时间(不过很长时间)。 有没有办法可以更快地搜索? 例如: ...

3 检查列表是否至少包含另一个 - 枚举

我有一个枚举: 然后我有一个Enums列表。 我想检查一下我的列表中是否至少有一个枚举。 我目前通过迭代方法检查它。 我也知道有一种方法可以通过使用|| 检查list.contains(enum.ABC..) || list.contains(enum.XYZ) || ... l ...

4 如何获取字典键,其值至少包含另一个列表中的一项?

我写了一个简单的脚本,其范围是: 现在,我需要查找字典中所有在键中至少有一个列表项的键。 示例:在Joeys值中为19,所以Joey是赢家。 我是怎么做到的:(完全没有程序员) 但这非常耗时,因为它基本上遍历数据库中的所有内容。 我可以寻求帮助来优化这一点吗? 谢 ...

6 检查列表中是否存在具有特定值的字典

我需要使用每个条目具有多个值的方式填充Python数据结构,无论是列表,字典还是类似内容,但是如果某些值重复,则需要跳过该条目。 例如,假设我有三行文本,每行中都有三个值,并且两行具有相同的第一个值: 我想要得到的结果是两个条目的数组或字典,每个条目都是三个值,以便以后可以迭代它并 ...

7 检查一个字符串是否在单词列表R中至少包含n个单词

我仅在Python / Java中找到了针对此问题的解决方案。 我有一个带有新闻文章和相应日期的data.frame。 我还提供了要检查每篇文章的关键字列表。 如果我只想检查文章中是否包含以下单词之一,我想出了一个不错的解决方案: 这很好用,但是我实际上正在寻找的是一种可 ...

8 检查一个向量是否包含来自另一个向量的至少一个值

如果我有两个向量: 什么是检查moo是否包含至少一个同样在foo中的值的最简单(规范)方法。 在这种情况下,它将返回'true',因为:a和:d出现在foo中。 其次:如果foo包含moo的所有元素(但允许包含其他元素),是否有可能进一步优化以返回true ...

2016-04-13 14:43:47 3 625   clojure
9 找出哪个列表包含字典中的值

我已经写了一个象棋程序,目前正在通过编码检查工作。 如何kingpos清单中有kingpos哪一部分(词典中的键)? 下面的示例应给出'ksbishop'的答案。 kingpos=(5,1) movesdict={'ksknight': [(8, 3), (5, 2), (6, 3)] ...

10 检查字典值是否包含列表项

我有一个字典,它有一个键(一个两位数的前缀)和一个值(一个字符串列表)。 它看起来像这样: 我正在尝试创建一个前缀列表,其中的值包含列表中提供的区域。 通过的区域可以是一个或多个区域,例如: 因此,上述数据我想创建一个新的列表名为前缀,它将包含所有的前缀,其中无论是“威尔士”或“英格兰威尔 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM