Печать ключей словаря и значений в одной строке, один за другим в Python3 - PullRequest
0 голосов
/ 31 октября 2018

Допустим, у меня есть словарь: {'Mark': 100.0, 'Peter': 50.0, 'John': 25.0}

Я хотел бы напечатать это так:

Mark pays 100
Peter pays 50
John pays 25

Но если предположить, что эти ключи и значения будут введены в Программу и их количество может измениться, как бы я это сделал?

Как-то с циклом while?

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

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Если вы хотите использовать цикл for, вы можете использовать функцию .items () для циклического перемещения по элементам словаря:

d = {'Mark': 100.0, 'Peter': 50.0, 'John': 25.0}
for i, j in d.items():
print (i + ' pays ' + str(j))

Это дает желаемый результат

0 голосов
/ 31 октября 2018

Конечно, это можно сделать с помощью цикла, но есть и другой способ:

d = {'Mark': 100.0, 'Peter': 50.0, 'John': 25.0}
sorted_items = sorted(d.items(), key=lambda e: e[1], reverse=True)
print('\n'.join('{} pays {}'.format(k, int(v)) for k, v in sorted_items))

Пояснение: d.items() вернет коллекцию ключей и значений d, затем я отсортировал эти элементы по значению и сохранил в sorted_items, '{} pays {}'.format(k, int(v)) создаст строку типа DictKey pays DictValue, '\n'.join объединит все строки в одну отдельную на \n. Если вам не нужно сортировать элементы по значению, просто пропустите шаг sorted_items = ..., но имейте в виду, что порядок элементов не гарантируется одинаковым:

d = {'Mark': 100.0, 'Peter': 50.0, 'John': 25.0}
print('\n'.join('{} pays {}'.format(k, int(v)) for k, v in d.items()))

Выход:

Марк платит 100

Питер платит 50

Джон платит 25

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...