Я работаю с Python 3.6, и мне нужно перебрать вложенный словарь, чтобы найти, существует ли указанное значение, и, если это так, сохранить все ключи, которые соответствуют этому значению.Мне также нужно расширить эти критерии, чтобы иметь возможность хранить ключи, для которых существует определенное значение для указанного ключа словаря.
Словарь построен следующим образом:
dict = {A: {B: [a, b, c], C: [d, c, e]}, D: {B: [f, g, h], E: [i, j, c]}...}
Каждыйпервичный ключ (A, D и т. д.) уникален, но ключи в под-словарях повторяются в разных под-словарях.
Я хотел бы получить все первичные ключи, для которых существует значение, такое как "c", поэтому вывод будет:
foundKeys = [A, D]
Я также хотел бы добавить критерии дляключ под-словаря, например, получить все первичные ключи, для которых "c" существует для ключа под-словаря "B".Здесь вывод будет:
foundKeys = [A]
Что касается первого условия, я придумал следующий код:
myList = list(dict.keys())
foundKeys = []
for i in range(0,len(myList)):
tmpList = list(dict.get(myList[i],{}).values())
for j in range(0, len(tmpList)):
for k in range(0, len(tmpList[j])):
if "c" in tmpList[j][k]:
if myList[i] not in foundKeys:
foundKeys.append(myList[i])
Это позволяет мне получить список всех ключей, которыеимеют соответствующее значение «c» ([A, D]), но у меня большой набор данных, и я понимаю, что, вероятно, есть лучший способ справиться с этим.
Я мог бы изменить этот код, чтобы добавить подпрограммуусловие для словаря и получить вывод [A], но для его запуска потребуется еще больше времени.
Я новичок в Python и все еще учусь оптимизировать.Можете ли вы посоветовать, как мне подойти к этому, чтобы лучше справиться с этим при работе с большим набором данных?