在字典列表中搜索Python字典值的最佳方法是什么?
我有一个这样的数据结构:
data = [
{'site': 'Stackoverflow', 'id': 1},
{'site': 'Superuser', 'id': 2},
{'site': 'Serverfault', 'id': 3}
]
我想在这个列表里查找是否有某个特定值的站点。比如,我想看看这个列表里有没有一个字典,它的站点是'Superuser',然后返回True(有)或者False(没有)。我可以用常规的方法,一个一个地遍历每个项目进行比较。有没有其他的方法可以更方便地进行搜索呢?
4 个回答
6
列表是必须要用循环的,这就是列表的用途。
如果你想避免使用循环,那就得不使用列表。
你需要的是字典,用来存储搜索的关键字和对象。
sites = dict( (d['site'],d) for d in data )
ids = dict( (d['id'],d] for d in data )
现在你可以通过 sites["Superuser"]
来找到与 'Superuser' 相关的项目,这样就可以用一种快速查找的方法,而不是用循环。
9
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序中使用它。这就像你从冰箱里拿出食材,然后用这些食材做饭一样。
在这个过程中,我们可能会遇到一些问题,比如数据格式不对,或者数据缺失。这就像你打开冰箱发现缺少某种食材,导致你不能做出想要的菜。
为了避免这些问题,我们可以提前检查数据,确保它们是完整的、格式正确的。这样一来,我们就能顺利地进行下一步操作,就像在做饭前先确认所有食材都准备齐全一样。
总之,处理数据的时候,提前做好准备和检查是非常重要的,这样才能让我们的程序运行得更顺利。
filter( lambda x: x['site']=='Superuser', data )
29
any(d['site'] == 'Superuser' for d in data)
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。