python - 在列表中过滤字典
问题描述
我需要在 a 中过滤dictionary
a list
。我的数据如下所示:
[('John', 'Samantha', {'source': 'family'}),
('John', 'Jill', {'source': 'work'})]
我需要用 过滤记录source=family
,我尝试了以下但没有奏效:
expectedResult = [i for i in my_list if i['source'] == 'family']
非常感谢您的帮助!
解决方案
在您的列表理解中,i
是元组之一,所以('John', 'Samantha', {'source': 'family'})
or ('John', 'Jill', {'source': 'work'})
。那不是一本字典,所以你不能把它当作一本!
如果您的元组始终由 3 个元素组成,并且第 3 个元素是带有source
键的字典,请使用:
[i for i in my_list if i[2]['source'] == 'family']
如果这些假设中的任何一个不成立,您将不得不添加更多代码。例如,如果字典始终存在但'source'
可能缺少键,则可以dict.get()
在键不存在时使用返回默认值:
[i for i in my_list if i[2].get('source') == 'family']
如果元组的长度可以变化,但字典始终是最后一个元素,则可以使用负索引:
[i for i in my_list if i[-1]['source'] == 'family']
等等。作为一个程序员,你总是要检查这些假设。
推荐阅读
- python - Python循环遍历嵌套列表
- android - 识别来自 Sim1 和 Sim2 的通话记录
- javascript - 根据下拉值过滤html表格
- python - 使用 minidom 创建 XML 文件
- sql-server - 在 SQL Server 的 Departments 表中更新每个部门的 NoOfStudents 的最佳方法是什么?
- python - 如何让我的爆炸附加在我的敌人 x 和 y 上?游戏
- c++ - 每个类的函数在该类的对象中是否有函数指针?
- vba - 获取符号包含名称
- python - 在熊猫上使用 for 循环绘图
- microsoft-graph-api - 从外部系统调用微软团队的用户