#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
Это словарь. Вам не нужно перебирать его, чтобы найти в нем ключ. Вы просто получаете доступ к ключу. Приведенная выше функция не вернет ничего, если переданные значения не находятся в переданном в словаре.