Цикл по словарю и список значений и индекс значений - PullRequest
0 голосов
/ 07 июня 2018

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

cdict = {'ZS': [3,3,3,5,5,5,5,7,7,7,7,8,8,11,11,11,11,11,11,1,1,1,1,3]}

for k, v in cdict.items():
    print (v)

Я хотел бы иметь возможность вернуть следующее: 3, 0 3, 1 3, 2 5, 3 ... 3, 23Где 0,1,2,3 и т. Д. (Во втором столбце) - соответствующие позиции индекса значений.Любая помощь с благодарностью.

Ответы [ 4 ]

0 голосов
/ 07 июня 2018

Однострочное решение:

a = list(map(lambda v: list(map(lambda x: print("{}, {}".format(*x[::-1])) or x[::-1], enumerate(v))), cdict.values()))

бонус : в a можно найти следующий список: [[(3, 0), (3, 1),(3, 2), (5, 3), (5, 4), (5, 5), (5, 6), (7, 7), (7, 8), (7, 9), (7, 10), (8, 11), (8, 12), (11, 13), (11, 14), (11, 15), (11, 16), (11, 17), (11, 18), (1, 19), (1, 20), (1, 21), (1, 22), (3, 23)]]

0 голосов
/ 07 июня 2018

Не уверен, если это то, что вы после, но это напечатает элемент в dict и индекс:

cdict = {'ZS': [3,3,3,5,5,5,5,7,7,7,7,8,8,11,11,11,11,11,11,1,1,1,1,3]}
print(cdict['ZS'])
index = -1
for e in cdict['ZS']:
    index += 1
    print("Index:",index, "item", e)
0 голосов
/ 07 июня 2018

Вы уже показали, что можете перебирать словарь.Так что осталось напечатать список с индексами.В Python есть замечательная функция с именем enumerate:

for (i, v) in enumerate([3,3,5]):
    print(v, i)

3 0
3 1
5 2

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

0 голосов
/ 07 июня 2018
cdict = {'ZS': [3,3,3,5,5,5,5,7,7,7,7,8,8,11,11,11,11,11,11,1,1,1,1,3]}

for k, v in cdict.items():
    for idx in range(len(v)):
        print('{}, {}'.format(v[idx], idx))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...