Python 如何筛选列表中的嵌套词典

Python 如何筛选列表中的嵌套词典,python,Python,我有一个包含嵌套字典的患者列表,如下所示: 病人名单 [ {"id": 1 "hospital":{"id": 1 "doctor":{"id": 1}} }, {"id": 2 "hospital":{"id": 2 "doctor":{"id": 1}}

我有一个包含嵌套字典的患者列表,如下所示: 病人名单

[ {"id": 1
   "hospital":{"id": 1
    "doctor":{"id": 1}}
  },
  {"id": 2
   "hospital":{"id": 2
    "doctor":{"id": 1}}
  }]
我正在尝试过滤它,这样我就可以得到属于id=1的医生的所有患者。我尝试了以下解决方案的不同变体,但没有成功。我不确定这是否是正确的方法。我将感谢任何帮助

id=1
result = [d for d in patient_list['hospital']['doctor'] if d['id'] == id]

不能使用字符串索引列表,应该对每个列表项进行索引

idx = 1
results = [d for d in patient_list if d['hospital']['doctor']['id'] == idx]
这将转化为

idx = 1

results = []
for patient in patient_list:
    hospital = patient['hospital']
    doctor = hospital['doctor']
    doctor_id = doctor['id']
    if doctor_id == idx:
        results.append(patient)

问题中的json是不正确的

假设json如下所示:

In [6]: patient_list
Out[6]:
[{'id': 1, 'hospital': {'id': 1}, 'doctor': {'id': 1}},
 {'id': 2, 'hospital': {'id': 2}, 'doctor': {'id': 1}}]

In [7]: [d for d in patient_list if d["doctor"]['id'] == id]
Out[7]:
[{'id': 1, 'hospital': {'id': 1}, 'doctor': {'id': 1}},
 {'id': 2, 'hospital': {'id': 2}, 'doctor': {'id': 1}}]

不要用变量覆盖内置的
id
,请使用
\u id
id\u
代替teadgood point@gold\cy。代码仍然有效。谢谢!您可以编辑您“输入”两次的答案。非常感谢!