Вывести значение и следующее значение dict в одной и той же строке во время итерации с нечетным количеством элементов - PullRequest
0 голосов
/ 31 октября 2018

(Python 2.7) В моем предыдущем вопросе я пытался перебирать ключи словаря "комнаты" и показывать только два ключа в строке, как я могу показать нечетное количество комнат за раз? Точнее говоря, по два на строку, пока не останется только один, и только один будет идти по линии самостоятельно.

Предыдущий вопрос

Текущий код:

rooms = {
"101": "Classroom",
"102": "Bathroom",
"103": "Room",
"104": "Room",
"105": "Room",
"106": "Room"}


keys = iter(sorted(rooms.keys()))
for key in keys:
    print key + "    " + next(keys)

Токовый выход:

101    102
103    104
105    106

Результат на выходе:

101    102
103    104
105    106
107

Ответы [ 3 ]

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

В качестве альтернативы используйте enumerate.

from __future__ import print_function

per_line = 2
keys = iter(sorted(rooms.keys()))
for i, key in enumerate(keys):
    if (i + 1) % per_line == 0 or (i + 1) == len(rooms.keys()):
        print(key)
    else:
        print(key, end="\t")
0 голосов
/ 31 октября 2018

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

keys = iter(sorted(rooms.keys()))
for key in keys:
    print key + "    " + next(keys, "")
0 голосов
/ 31 октября 2018
rooms = {
"101": "Classroom",
"102": "Bathroom",
"103": "Room",
"104": "Room",
"105": "Room",
"106": "Room",
"107": "Room"}


keys = iter(sorted(rooms.keys()))
for key in keys:
    try:
        print(key + "    " + next(keys))
    except StopIteration:
        print(key)

Хотя было бы намного проще составить keys список и просто проверить, достигли ли вы конца.

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