我在Python中有一个JSON/dictionary对象,如下所示:
object = {"participants":
[
{"name": "Tyler", "role": "CEO"},
{"name": "Robin", "role": "analyst"}
{"name": "James", "role": "manager"}
]
}
给定一个人名,我如何访问他们的角色?由于角色不是"子信息";对于名称,不能只做
这样的操作object['participants']['Tyler']['role']
什么的。您也不知道特定人员的索引(我假设您可以创建一个找到它的循环,如果这是唯一的解决方案),因此您不能只执行
object['participants'][0]['role']
也不是,因为Tyler刚好在索引0处
我会用这样的:
def jobs_where_name_is(json_object, name):
return {entry["role"] for entry in filter(lambda entry: entry["name"] == name, json_object["participants"])}
请注意,可能有多个具有相同姓名的人,这就是为什么返回一组作业而不是一个作业的原因。可能有不止一个人在同一份工作中使用相同的名字,所以这就是为什么我使用大括号(set)而不是方括号(list)。注意object在python中是一个关键字,所以不鼓励使用它作为变量名。
顺便说一下,如果你正在处理一个非常大的数据库,我建议你看看pymongo库。这可以大大提高您的性能,因为您可以本地使用mongodb查询。