11
A
回答
32
我可能会写:
>>> lod = [{1: "a"}, {2: "b"}]
>>> any(1 in d for d in lod)
True
>>> any(3 in d for d in lod)
False
但如果有将是一个很多类型的字典在此列表中,你可能要重新考虑你的数据结构。
如果你想索引和/或其中第一个找到匹配的字典,一个方法是使用next
和enumerate
:
>>> next(i for i,d in enumerate(lod) if 1 in d)
0
>>> next(d for i,d in enumerate(lod) if 1 in d)
{1: 'a'}
>>> next((i,d) for i,d in enumerate(lod) if 1 in d)
(0, {1: 'a'})
这将提高StopIteration
如果它不存在:
>>> next(i for i,d in enumerate(lod) if 3 in d)
Traceback (most recent call last):
File "<ipython-input-107-1f0737b2eae0>", line 1, in <module>
next(i for i,d in enumerate(lod) if 3 in d)
StopIteration
如果你想避免这种情况,你可以捕捉异常或通过next
默认值,如None
:
>>> next((i for i,d in enumerate(lod) if 3 in d), None)
>>>
如由@drewk的评论中指出,如果你想获得多个指标在多个值的情况下返回,您可以使用列表理解:
>>> lod = [{1: "a"}, {2: "b"}, {2: "c"}]
>>> [i for i,d in enumerate(lod) if 2 in d]
[1, 2]
2
使用any
功能与发电机:
>>> d = [{1: "a"}, {2: "b"}]
>>> any(1 in x for x in d)
True
any
函数返回True
,如果在iterable
的至少一种元素传递给它是True
。但是你真的需要考虑,为什么你没有把所有的key: value
组合在一个单独的dict
?
1
parsedData=[]
dataRow={}
if not any(d['url'] == dataRow['url'] for d in self.parsedData):
self.parsedData.append(dataRow)
0
在单dictoray看到我们“在”关键字使用:
key in dic_instance
要检查字典的名单,通过词典列表,然后使用“任意”功能重复,因此,如果关键在任何发现的字典,它不会进一步迭代列表。
dic_list = [{1: "a"}, {2: "b"}]
any(2 in d for d in dic_list)
True
any(4 in d for d in dic_list)
False
相关问题
- 1. 检查列/密钥是否存在?
- 2. 如何检查散列中的密钥是否存在(redis)?
- 3. 检查密钥是否存在于散列表中JSP Struts 2
- 4. 检查列表是否包含密钥
- 5. 检查JSON密钥是否存在
- 6. 检查是否存在YAML密钥
- 7. 如何检查密钥是否在NHibernate中未保存的值
- 8. 如何检查记录中的密钥是否存在?
- 9. 如何检查密钥库中是否存在证书
- 10. 如何检查plist中是否存在密钥?
- 11. Javascript:如何检查密钥是否存在并返回密钥的值
- 12. 如何检查密钥和值是否已经存在于散列表
- 13. 如何检查本地存储中的密钥是否有值?
- 14. Python如何检查列表中是否存在元素?
- 15. 如何检查列表中是否存在元素python
- 16. 如何检查PHP中的哈希表中存在的密钥?
- 17. 检查python列表中是否存在列表
- 18. 检查python中是否存在sql表
- 19. 检查返回的字典密钥是否导致列表
- 20. iOS检查密钥存在
- 21. 使用PHP检查memcache集群中是否存在密钥
- 22. Cpp - 检查增强bimap中是否存在密钥
- 23. 检查Memcache中是否存在一个密钥
- 24. 检查Firebase数据库中是否存在特定密钥
- 25. 如何检查SQL Server中是否存在表的列表?
- 26. 在云Firestore规则中 - 如何检查密钥是否为空
- 27. 检查列表中是否存在
- 28. 如何检查二维数组中的密钥对是否存在?
- 29. 如何检查我的密钥是否存在于数组对象中
- 30. 如何在数据表的列中检查值是否存在?
说它确实存在,如果有几个我怎么能得到它的索引/第一个的索引? @DSM – user2057574 2013-02-09 20:25:04
像这样:'[我为我,我在枚举(lod),如果2在d]''或'[(我,d)为我,d在枚举(lod)如果2在d]'如果你想整个字典... ' – dawg 2013-02-09 20:28:57