当前位置: 首页 > 面试题库 >

如何根据任意条件函数过滤字典?

吕学
2023-03-14
问题内容

我有一个要点词典,说:

>>> points={'a':(3,4), 'b':(1,2), 'c':(5,5), 'd':(3,3)}

我想创建一个新字典,其中所有x和y值均小于5的点,即点“ a”,“ b”和“ d”。

根据这本书,每个字典都有该items()函数,该函数返回一个(key, pair) 元组列表:

>>> points.items()
[('a', (3, 4)), ('c', (5, 5)), ('b', (1, 2)), ('d', (3, 3))]

所以我写了这个:

>>> for item in [i for i in points.items() if i[1][0]<5 and i[1][1]<5]:
...     points_small[item[0]]=item[1]
...
>>> points_small
{'a': (3, 4), 'b': (1, 2), 'd': (3, 3)}

有没有更优雅的方式?我期待Python具有一些超棒的dictionary.filter(f)功能…


问题答案:

如今,在Python 2.7及更高版本中,您可以使用dict理解:

{k: v for k, v in points.iteritems() if v[0] < 5 and v[1] < 5}

在Python 3中:

{k: v for k, v in points.items() if v[0] < 5 and v[1] < 5}


 类似资料:
  • 可以对搜索结果进行过滤,只显示包含特定字段值的文档。也可以创建否定过滤器,排除包含特定字段值的文档。 从 Fields 表或 Documents 表中选择要添加的字段过滤器。除了可以创建积极字段和消极过滤器外,Documents 表还可以过滤某一字段是否存在。使用过的过滤器会在 Query 栏下方显示。消极过滤器用红色显示。 从 Fields 列表中添加一个过滤器: 点击想要过滤的字段名。这里显示

  • 问题内容: 我有一个像这样的数组: 现在,我想按某种条件过滤该数组,只保留值等于2的元素,并删除值不等于2的所有元素。 所以我的预期结果数组将是: 注意:我想保留原始数组中的键。 如何使用PHP做到这一点?有内置功能吗? 问题答案:

  • 我想编写能够使用许多条件来过滤对象列表的代码,但我希望条件的数量波动(有时使用1个字段过滤,有时使用所有3个字段过滤)。 在我的情况下,我希望用户可以为某个字段选择“任何”,但仍然对其他字段应用过滤器。在下面的情况下,用户可以通过字段< code>x,y 我已经编写了下面的代码,可以在这种情况下工作,但在将来添加更多过滤器时效率会越来越低。(2个过滤器导致4个返回语句,3个过滤器导致8个返回语句等

  • 我有如下问题: 输入:string:str=ABCDEFGH,前缀=“_”,位置=3,输出:result=AB_CDE_FGH 输入:string:str=10000000,前缀=“_”,位置=3,输出:result=10_000_000 输入:string:str=10000000,前缀=“_”,位置=2,输出:result=10_00_00_00 注意:在此问题中不能使用DecimalForm

  • 下面是我的搜索响应示例,检索到4个结果。 现在,我想根据下面的标准,根据特定的“dir”字段值过滤上述搜索结果。 在且仅在以下情况下将搜索结果包含在响应中: 如果“dir”字段值等于“/shared”或“/private/hitesh” 如果“dir”字段值以“/shared/”或“/private/hitesh/”开头,则为其他 如何在ElasticSearch中实现上述功能?

  • 如果您确切地知道如何过滤数据帧,那么解决方案很简单: