Помощь со словарем на Python?

#python #dictionary

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

Вопрос:

Я пытаюсь использовать этот словарь для того, чтобы провести «проверку» на основе пользовательского ввода. Так, например, это было бы похоже на то, что используется ниже. Я думаю, что, возможно, потребуется использовать цикл «Для»? Я улучшаю вопрос из-за того, что люди его не понимают. 1-й код-это то, что я пытаюсь выполнить, используя словарь, чтобы предоставить результат 2-го кода ниже.

 levels = {  'Closet': {'South': 'Hangar'},  'Hangar': {'North': 'Closet', 'East': 'Westwood'},  'Westwood': {'West': 'Hangar'} }  location = "Closet" direction = input()  if location == ("Checking dictionary to see which location it is")  if direction == ("Checking dictionary to see if direction is applicable")  location = ("updated location based on direction used with what is in dictionary levels")  

то есть

 if location == "Closet"  if direction == "South"  location = "Hangar"  choices = "North" or "East"   

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

1. Извините, я не понял, в чем заключается ваш вопрос. Ваш вопрос «нужно ли мне использовать цикл for»?

2. Я думаю, что вместо того, чтобы задавать другой вопрос о той же проблеме, вам следует улучшить существующий вопрос, чтобы сделать его более ясным, если он недостаточно ясен.

3. Можете ли вы предоставить более подробную информацию о том, чего вы пытаетесь достичь

4. Я пытаюсь использовать словарные термины, связанные с операторами «если» во время цикла while, чтобы, например, указать значение, основанное на том, что такое ключ, а также сравнить местоположение текущего местоположения со словарем и направления, реализованные пользователем, со значениями словаря

Ответ №1:

Я бы написал это так:

 if levels.get(location):  possible_direction = levels.get(location)  if possible_direction.get(direction):  location = possible_direction.get(direction)  

Или даже:

 new_location = levels.get(location, {}).get(direction) if new_location:  location = new_location  

Или даже:

 try:  location = levels[location][direction] except BaseException:  continue  

Ответ №2:

Просто пытаюсь понять, что вы здесь ищете.

 def update_location(location, direction, data):  return data.get('location', {}).get(direction, None)  levels = {  'Closet': {'South': 'Hangar'},   'Hangar': {'North': 'Closet', 'East': 'Westwood'},   'Westwood': {'West': 'Hangar'}  } location = 'Closet' direction = 'South' tmp = update_location(location, direction, levels) if tmp is not None:  location = tmp  

Это словарь. Вам не нужно перебирать его, чтобы найти в нем ключ. Вы просто получаете доступ к ключу. Приведенная выше функция не вернет ничего, если переданные значения не находятся в переданном в словаре.