我有以下数据结构:
data = [
{'site': 'Stackoverflow', 'id': 1},
{'site': 'Superuser', 'id': 2},
{'site': 'Serverfault', 'id': 3}
]
Run Code Online (Sandbox Code Playgroud)
我想搜索上面的列表,看看它是否有任何具有特定值的网站.例如,搜索上面的内容以查看列表是否包含site ='Superuser'的字典并返回True/False.我可以通过循环遍历每个项目并比较它们来完成上述操作.有没有其他方法来实现搜索?
Luk*_*ský 27
any(d['site'] == 'Superuser' for d in data)
Run Code Online (Sandbox Code Playgroud)
列表绝对需要循环。这就是列表的用途。
为了避免循环,您必须避免使用列表。
您需要搜索键和对象的字典。
sites = dict( (d['site'],d) for d in data )
ids = dict( (d['id'],d] for d in data )
Run Code Online (Sandbox Code Playgroud)
sites["Superuser"]现在,您可以使用散列查找而不是循环来查找与“超级用户”关联的项目。
| 归档时间: |
|
| 查看次数: |
10096 次 |
| 最近记录: |