如何过滤具有给定键匹配值的字典列表 [英] How to filter list of dictionaries with matching values for a given key

查看:20
本文介绍了如何过滤具有给定键匹配值的字典列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用像 a = copyf(dictlist, key, valuelist) 这样的接口.

<预><代码>>>>dictlist = [{'first': 'James','last': '焦耳'},{'第一':'詹姆斯','last': '瓦特'},{'first': '基督教','last': '多普勒'}]>>>值列表 = ['詹姆斯','约翰']>>>x = copyf(dictlist, 'first', valuelist)>>>打印(x)[{'第一':'詹姆斯','last': '焦耳'},{'第一':'詹姆斯','last': '瓦特'}]

dictlist 实际上是一个 csv.DictReader 实例.

解决方案

更新: 考虑到 OP 重新编辑的问题:

def copyf(dictlist, key, valuelist):返回 [dictio for dictio in dictlist if dictio[key] in valuelist]

With an interface like a = copyf(dictlist, key, valuelist).

>>> dictlist = [{'first': 'James',
                 'last': 'Joule'},
                {'first': 'James',
                 'last': 'Watt'},
                {'first': 'Christian',
                 'last': 'Doppler'}]
>>> valuelist = ['James', 'John']
>>> x = copyf(dictlist, 'first', valuelist)
>>> print(x)
[{'first': 'James',
  'last': 'Joule'},
 {'first': 'James',
  'last': 'Watt'}]

The dictlist is effectively a csv.DictReader instance.

解决方案

Update: taking into account the reedited question of the OP:

def copyf(dictlist, key, valuelist):
      return [dictio for dictio in dictlist if dictio[key] in valuelist]

这篇关于如何过滤具有给定键匹配值的字典列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆