#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. Это работает совершенно нормально. Спасибо