Перебор значений в нескольких списках, являющихся частью словаря - PullRequest
0 голосов
/ 21 апреля 2020

Мой словарь подобен этому

proj_d = {
    'key_A:': [u'1361808,1359404,1357929'],
    'key_B:': [u'1361808,1359404,1357929'],
    'Key_C:': [u'1361808,1359404,1357929'],
    'Key_D:': [u'1361808,1359404,1357929']
}

Это формат возврата метода.

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

Нужна помощь при распаковке предметов внутри списков.

Я использую python 2.7 (При необходимости я могу переключиться на python 3.7 )

1 Ответ

0 голосов
/ 21 апреля 2020

Элементы в ваших списках являются строками, поэтому вам нужно использовать split, чтобы сначала разбить их на части. Также вы упоминаете, что можете переключиться на Python3 .7, я бы порекомендовал сделать это, поскольку Python2 .7 достиг конца жизненного пути в январе.

for k, v in proj_d.items():
    print(f"Currently inside key {k}")
    for val in v[0].split(','):
        print(f"Currently at value {val}")

Currently inside key key_A:
Currently at value 1361808
Currently at value 1359404
Currently at value 1357929
Currently inside key key_B:
Currently at value 1361808
Currently at value 1359404
Currently at value 1357929
Currently inside key Key_C:
Currently at value 1361808
Currently at value 1359404
Currently at value 1357929
Currently inside key Key_D:
Currently at value 1361808
Currently at value 1359404
Currently at value 1357929

Чтобы сделать его более универсальным c если в ваших списках может содержаться более одной строки, измените ее на следующую.

from itertools import chain

for k, v in proj_d.items():
    print(f"Currently inside key {k}")
    vals = (item.split(',') for item in v)
    for val in chain.from_iterable(vals):
        print(f"Currently at value {val}")
...