как получить конкретное значение из словаря?

#python #dictionary

#питон #словарь

Вопрос:

Я пробовал разные способы получить конкретные значения из словаря, но не смог получить то, что хотел. Вот мой текущий словарь:

 {'email': 'rafae.raza@gmail.com', 'name': 'Rafae Raza', 'password': 'Rafae@123',  'preferences': {  'activities': ['Hiking', 'Cycling', 'Trekking', 'Skiing', 'Rock Climbing', 'Para Sailing', 'Camping', 'Boating',  'Sight Seeing'],  'categories': ['Coastal', 'Deserts', 'Forts', 'Hill Stations', 'Islands', 'Lakes'],  'districts': ['Punjab', 'Sindh', 'Islamabad', 'KPK',  'Gilgit-Baltistan', 'Azad Kashmir']}, 'profilePicture': ''}  

Я хочу получить только список категорий из этого словаря. Как я могу это сделать?

Вот мой код, до сих пор предполагающий listt в качестве словаря.

 listt = list(anotherDict.val())  for i in listt:  if (i == "preferences"):  print(listt.pop(3))   

Он просто печатает «предпочтения».

Комментарии:

1. Вы хотите получить значение только из диктанта? (например anotherDict['preferences'] ) Или у вас есть другая проблема? Непонятно, чего должен достичь весь этот код?

2. Вы можете просто использовать anotherDict["preferences"]["categories"]

3. Кроме того, в словарях нет .val() метода. Ваш код вообще не будет выполняться, не говоря уже о печати "preferences" .

4. @jarmod это отличный трюк. спасибо, что дали нам знать

5. Это стандартный способ доступа к данным во встроенных словарях. Вам следует использовать этот подход, а не перебирать элементы в диктанте, выполняя поиск по ключу. Весь смысл использования диктанта заключается в том, чтобы вы получали постоянный доступ к элементам во времени (в отличие от списка, который требует, чтобы вы перебирали элементы в линейном времени).

Ответ №1:

Когда вы ставите listt = список(//что-то), словарь listt становится только с ключами. поэтому удалите строку listt = list(anotherDict.val()) Вы можете получить значения вложенных элементов в словаре с помощью следующего кода.

 listt = //your dictionary for i in listt:  if (i == "preferences"):  print(listt[i]['categories'])  

Комментарии:

1. Это работает совершенно нормально. Спасибо