Можно ли выбрать, какие ключи словаря я хочу печатать на Python?

#python #dictionary #key

Вопрос:

Это мой первый пост, так что, пожалуйста, потерпите меня. В настоящее время я нахожусь на вводном занятии по информатике, и наш заключительный проект состоит в том, чтобы создать текстовую игру, в которой вы будете перемещаться из комнаты в комнату и собирать предметы. Я хочу предоставить игроку их возможные ходы, чтобы они не тратили время впустую, натыкаясь на стены. Код, который у меня есть, работает до тех пор, пока игрок выбирает, чтобы забрать предмет в комнате. Однако, если они покидают объект, то «элемент» печатается в возможных перемещениях, так как он не был добавлен. Это мои мысли, но я изо всех сил пытаюсь полностью соединить точки в своей голове:

 if 'item' in rooms[current_room]:
    print(rooms[current_room].keys())  <---- would I add some kind of range here [:]? I'm not sure how I would do that.
 

Может быть, сработает цикл «для»? Что-то вроде

 for keys in range.....
 

Я не хочу удалять ключ, я просто не хочу, чтобы он печатался. Любые советы будут оценены по достоинству! Вот код, который вызывает у меня проблемы:

 rooms = {

    'Living Room': {'North': 'Master Bedroom', 'South': 'Kitchen', 'East': 'Laundry Room', 'West': 'Front Porch'},
    'Laundry Room': {'North': 'Back Door', 'West': 'Living Room', 'item': 'Fancy Duds'},
    'Back Door': {'South': 'Laundry Room', 'item': 'Nice Shoes'},
    'Kitchen': {'North': 'Living Room', 'East': 'Your Room', 'item': 'Half-Eaten Box of Chocolates'},
    'Your Room': {'West': 'Kitchen', 'item': 'Cheap Cologne'},
    'Front Porch': {'East': 'Living Room', 'item': 'Freshly Picked Flowers'},
    'Master Bedroom': {'South': 'Living Room', 'East': 'Master Bathroom', 'item': 'Flashlight'},
    'Master Bathroom': {'West': 'Master Bedroom', 'item': 'YOUR MOTHER'}  # villian
}

current_room = 'Laundry Room'

possible_moves = rooms[current_room].keys()

print('Possible Moves:', *possible_moves)
 

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

1. что ты пытался сделать? Ты сказал Maybe a 'for' loop , но ты не пробовал. Сначала вы могли бы попробовать использовать for -loop

2. Я начал работать над циклом for, когда опубликовал это. Честно говоря, я не был уверен, как быстро получу ответ на свой вопрос, поэтому написал сообщение до того, как по-настоящему поработал над своим циклом. Теперь я знаю, что здесь есть несколько быстро реагирующих. Спасибо!

Ответ №1:

Вы можете отфильтровать беспокоящий ключ («элемент») таким образом:

 possible_moves = [move for move in rooms[current_room].keys() if move != "item"]
print('Possible Moves:', possible_moves)
 

Это эквивалентно вашей идее использовать для этого цикл for, как это:

 possible_moves = []
for move in rooms[current_room].keys():
    if move != 'item':
         possible_moves.append(move)
print(possible_moves)
 

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

1. Спасибо! Это то, куда мой мозг пытался попасть, но моя база знаний Python все еще довольно мала, поэтому я не был уверен, как туда добраться. Спасибо вам за то, что написали это в обоих направлениях, это помогает мне понять процесс.