#python #list #dictionary #printing #output
#python #Список #словарь #печать #вывод
Вопрос:
В настоящее время я работаю над игрой «Угадай, кому нравится» для школьной работы, и, похоже, я не могу заставить это работать. То, что я пытаюсь сделать, это напечатать поле «Name» из всех приведенных ниже словарей в списке.
Greg = {"Name":"Greg", "HairLength":"Short", "HairColour":"Brown", "FacialHair":"Yes", "Jewellery":"Yes", "Hat":"No", "Lipstick":"No", "Gender":"Male"}
Chris = {"Name":"Chris", "HairLength":"Long", "HairColour":"Blonde", "FacialHair":"No", "Jewellery":"No","Hat":"Yes", "Lipstick":"Yes", "Gender":"Male"}
Jason = {"Name":"Jason", "HairLength":"Short", "HairColour":"Brown", "FacialHair":"Yes", "Jewellery":"No","Hat":"Yes", "Lipstick":"No", "Gender":"Male"}
Clancy = {"Name":"Clancy", "HairLength":"Bald", "HairColour":"Red", "FacialHair":"Yes", "Jewellery":"No", "Hat":"No","Lipstick":"No", "Gender":"Male"}
Betty = {"Name":"Betty", "HairLength":"Short", "HairColour":"Blonde", "FacialHair":"No", "Jewellery":"Yes","Hat":"Yes", "Lipstick":"Yes", "Gender":"Female"}
Helen = {"Name":"Helen", "HairLength":"Short", "HairColour":"Brown", "FacialHair":"No", "Jewellery":"No", "Hat":"No","Lipstick":"Yes", "Gender":"Female"}
Selena = {"Name":"Selena", "HairLength":"Long", "HairColour":"Brown", "FacialHair":"No", "Jewellery":"Yes","Hat":"No", "Lipstick":"No", "Gender":"Female"}
Jacqueline = {"Name":"Jacqueline", "HairLength":"Long", "HairColour":"Red", "FacialHair":"Yes", "Jewellery":"Yes", "Hat":"No","Lipstick":"No", "Gender":"Female"}
AISuspects = ([Greg, Chris, Jason, Clancy, Betty, Selena, Helen,
Jacqueline])
UserSuspects = ([Greg, Chris, Jason, Clancy, Betty, Selena, Helen, Jacqueline])
print("AISuspects:")
#Here i want it to print the field "Name" in every dictionary within the list AISuspects
print("UserSuspects:")
#Here i want it to print the field "Name" in every dictionary within the list UserSuspects
Ожидаемый результат и текущий результат после решения:
AI подозревает: [‘Грег’, ‘Крис’, ‘Джейсон’, ‘Клэнси’, ‘Бетти’, ‘Селена’, ‘Хелен’, ‘Жаклин’]
Пользователь подозревает: [‘Грег’, ‘Крис’, ‘Джейсон’, ‘Клэнси’, ‘Бетти’, ‘Селена’, ‘Хелен’, ‘Жаклин’]
Комментарии:
1. Вам не нужны круглые скобки
()
вокруг вашихAISuspects
UserSuspects
списков и . Достаточно просто создать список с[]
помощью.
Ответ №1:
Вы можете использовать понимание списка, чтобы получить список имен всех подозреваемых
suspects_names = [suspect['Name'] for suspect in AISuspects]
Тогда вы можете использовать print(' '.join(suspect_names))
Если вы не возражаете печатать каждое имя в новой строке, просто используйте цикл for:
for suspect in AISuspects:
print(suspect['Name'])
Позаботьтесь об этих круглых скобках вокруг определений списков, они вам не нужны, и они обычно используются для определения кортежей, поэтому я бы избавился от них
Комментарии:
1. Я немного смущен, не могли бы вы расширить, чтобы узнать, почему это работает, а не просто знать, что это работает, и я могу двигаться дальше… Спасибо
2. @ComputerExpert69 Можете ли вы уточнить, какая именно часть вас смущает? Я думаю, что первое решение, предлагаемое с использованием понимания, — это то, что вы, вероятно, еще не изучили. Второе решение может показаться вам более знакомым.
3. О, извините, я не понял, что вы отредактировали свой пост, да, я понимаю, что второе решение спасибо!
4. @ComputerExpert69 Если это решение помогло вам, пожалуйста, убедитесь, что вы отметили его как принятое (галочка рядом с этим ответом).
5. Нет, конечно, никаких обид. Вы абсолютно правы, это лучшее решение для будущих читателей, в чем я виноват.
Ответ №2:
UserSuspects = [Greg['Name'], Chris['Name'],Jason['Name'], Clancy['Name'], Betty['Name'], Selena['Name'], Helen['Name'], Jacqueline['Name']]
print UserSuspects
Комментарии:
1. Это гораздо более простое решение, и я получал ошибки от других решений, поэтому я предложу вам это решение вопросов 😉
2. Принятие этого решения не имеет никакого смысла @ComputerExpert69, когда другое явно является лучшим решением здесь и способом решения этой проблемы.
3. Как именно это «лучшее» решение? @idjaw
4. @ComputerExpert69 что делать, если вам также нужно вызвать нового подозреваемого
John
? Или, может быть, еще 200? И как это отвечает на ваш вопрос » Как я могу распечатать определенное поле словаря из многих словарей в списке? »5. @Andras Deak, вы правы, его решение «лучше», оно не такое простое, но оно, безусловно, намного лучше закодировано