#python #python-3.x #list #dictionary
#питон #python-3.x #Список #словарь
Вопрос:
У меня есть список, содержащий кортежи с парами, первый элемент-это имя (строка), второй-список, содержащий рестораны, в которых был этот человек. У меня есть диктант, содержащий десятки таких ресторанов. Поэтому, если человек А был в ресторанах (x,y,z)
, следовательно, [('A', ['x', 'y', 'z'])]
и в моем диктанте это указано {'x':10, 'y':23, 'z':33}
. Как я могу заменить названия ресторанов на номера, указанные в словаре, содержащем названия? Имея выход [('A', [10, 23, 33])]
. После этого я хочу подвести итог этим цифрам [('A', [66])]
.
Спасибо. Вот код, который я использую:
restaurants_attended = [('Aariz Lambert', ['The Beach Chimney', 'Parlay', 'The Private Exhibit']), ('Ariya Collier', ['Seawise', 'Enigma', 'Midnight'])]
{'The Beach Chimney': 201.0, "The Pirate's Harvest": 154.0, 'The Square Dragon': 132.0, 'The Spicy Trumpet': 266.0, 'Vertigo': 204.0, 'Drifters': 183.0, 'The Tulip': 156.0, 'Seawise': 136.0, 'Parlay': 140.0, 'The Modern Salmon': 176.0, 'The Bitter Windmill': 139.0, 'The Minty Window': 166.0, 'The Private Exhibit': 189.0, 'Enigma': 228.0, 'The Lighthouse': 159.0, 'Harlequin': 131.0, 'Midnight': 141.0, 'Gastrognome': 166.0}
Комментарии:
1. Это не служба написания кода. Вы действительно пытались сделать что-нибудь из этого? Код, который вы используете, — это просто данные. Вам нужно задать более конкретный вопрос.
2. Я уже некоторое время пытаюсь это сделать, но просто не могу заставить это работать. Если я пройдусь по всему коду, это будет довольно долго, это только последний шаг.
Ответ №1:
Вы можете использовать понимание под диктовку:
restaurants_attended = [('Aariz Lambert', ['The Beach Chimney', 'Parlay', 'The Private Exhibit']), ('Ariya Collier', ['Seawise', 'Enigma', 'Midnight'])] scores = {'The Beach Chimney': 201.0, "The Pirate's Harvest": 154.0, 'The Square Dragon': 132.0, 'The Spicy Trumpet': 266.0, 'Vertigo': 204.0, 'Drifters': 183.0, 'The Tulip': 156.0, 'Seawise': 136.0, 'Parlay': 140.0, 'The Modern Salmon': 176.0, 'The Bitter Windmill': 139.0, 'The Minty Window': 166.0, 'The Private Exhibit': 189.0, 'Enigma': 228.0, 'The Lighthouse': 159.0, 'Harlequin': 131.0, 'Midnight': 141.0, 'Gastrognome': 166.0} output = {person: [scores[r] for r in rests] for person, rests in restaurants_attended} print(output) # {'Aariz Lambert': [201.0, 140.0, 189.0], 'Ariya Collier': [136.0, 228.0, 141.0]} output_sum = {person: sum(scores) for person, scores in output.items()} print(output_sum) # {'Aariz Lambert': 530.0, 'Ariya Collier': 505.0}
Если вам нужны списки кортежей, как вы указали, используйте list
, как в:
print(list(output.items())) # [('Aariz Lambert', [201.0, 140.0, 189.0]), ('Ariya Collier', [136.0, 228.0, 141.0])]