#python #python-3.x
Вопрос:
У меня есть словарь с несколькими ключами, внутри которых есть другие ключи, а также списки. Пример:
dictABC=
{
"name": "bob",
"id": "abs",
"meta": {
"v": "2",
"update": "00"
},
"other": {
"age": [
{
"a": "test",
"b": "test1",
"c": "test2"
},
{
"a": "user",
"b": "user1",
"c": "user2"
}
]
}
}
Я хочу, чтобы процедура проверяла, существуют ли некоторые ключи, если да, то получала значение, если нет, продолжайте проверять следующий, пока не будет проверен весь список ключей. В конце я создам словарь с теми ключевыми значениями, которые существуют в dictABC
Как я могу это сделать? Как я могу проверить dictABC["other"]["age"][0]["a"]
, существует ли форма ключа внутри списка?
В настоящее время у меня есть
list_keys = ["name", "update", "a"]
keys = []
values = []
for k in list_keys:
if k in dictABC:
keys.append(k)
values.append(dictABC[k])
newDict = {k:v for k,v in zip(keys, values)}
print(new)
Комментарии:
1. Чего вы хотите, не совсем ясно. Вы хотите получить полный список ключей? Убедитесь, что ключи существуют для запуска
dictABC["other"]["age"][0]["a"]
? Какова ваша цель с точки зрения применения? Каков ожидаемый результат?2. Существует: pypi.org/project/jsonpath-ng
3. @mozway спасибо за ответ, я хочу иметь цикл, который проверяет некоторые ключи (например, ключ «a», который находится внутри списка и ключа) и создает новый словарь с существующими значениями ключей. Я тоже пробовал попробовать/кроме, но он останавливается после того, как один из ключей не существует. И я хочу, чтобы все ключи в списке были проверены
4. Что делать, если один и тот же ключ встречается несколько раз, на разных уровнях или в разных ветвях дерева данных?
5. @Arne хороший вопрос, мне просто нужен ключ для определенного уровня; нужно ли мне реализовывать операторы IF для каждого ключа или есть способ зацикливания?