Как получить доступ к многоуровневому python python с итераторами?

У меня есть этот dict / json:

data={
"paraview": {
    "3.5": {
        "image": "/data/singularity/containers/paraview_5.5.2.simg",
        "recipe": "/data/singularity/YAJE/yaje/paraview/Singularity.5.5.2",
        "source": "packet"
    },
    "5.5.2": {
        "image": "/data/singularity/containers/paraview_5.5.2.simg",
        "recipe": "/data/singularity/YAJE/yaje/paraview/Singularity.5.5.2",
        "source": "packet"
    }
  }
}

Я могу найти значение с помощью:

app ="paraview"
version= "3.5"

if app in data:
   if version in data[app]:
       print("ubucacion: {}".format(data[app][version]['image']))

выход:

ubucacion: /data/singularity/containers/paraview_5.5.2.simg

Но как я могу сделать это с помощью iteratos для очень больших dicts?

я не уверен, что вы имеете в виду, я был бы рад помочь, вы хотите пройти через несколько quaries

Jonas Wolff 10.09.2018 09:52

@JonasWolff, мне нужно сделать один запрос с некоторыми фиксированными значениями, но я боюсь, что если словарь сильно вырастет, у него возникнут проблемы со временем ответа. вот почему я подумал, что должен сделать что-то более эффективное

al3x609 10.09.2018 10:13

словарь использует хеши, поэтому я не думаю, что размер является реальной проблемой

Jonas Wolff 10.09.2018 10:15
0
3
53
1

Ответы 1

ты имеешь ввиду:

for i in [(app,version), (app,version)]:
    if i[0] in data and i[1] in data[i[0]]: # secondhalf of and statement won't run if first half is false
        print("ubucacion: {}".format(data[i[0]][i[1]]['image']))

Другие вопросы по теме