在词典列表中搜索Python字典值的最佳方法是什么?

Thi*_*Lam 16 python

我有以下数据结构:

  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)

  • 哇,我们在10秒内发布*完全*相同的内容.猜猜我会删除我的.:( (9认同)

avg*_*nko 9

filter( lambda x: x['site']=='Superuser', data )
Run Code Online (Sandbox Code Playgroud)


S.L*_*ott 6

列表绝对需要循环。这就是列表的用途。

为了避免循环,您必须避免使用列表。

您需要搜索键和对象的字典。

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"]现在,您可以使用散列查找而不是循环来查找与“超级用户”关联的项目。