Как разбить список списков на пары ключ / значение словаря? - PullRequest
0 голосов
/ 10 мая 2019

У меня есть следующее list:

is_censored = [[True, True], [False, True], [False, False]]

, которое я хочу поместить в dictionary с ключами / значениями, равными is_censored_1 = [True, True], is_censored_2=[False, True] и is_censored_3=[False, False].

Может ли это быть достигнуто питонически?

Пока у меня есть это:

data = dict()
for i, value in enumerate(is_censored):
    data['_'.join(['is_censored', str(i + 1)])] = value

, который дает правильный результат:

data = {'is_censored_1': [True, True], 'is_censored_2': [False, True], 'is_censored_3': [False, False]}

но это не так привлекательно для глаз.

Ответы [ 3 ]

6 голосов
/ 10 мая 2019

Вы можете использовать словарь с enumerate для форматирования f-строк :

{f'is_censored_{i+1}': l for i,l in enumerate(is_censored)}

{'is_censored_1': [True, True],
 'is_censored_2': [False, True],
 'is_censored_3': [False, False]}

Примечание: для версий Python < 3.6 используйте string.format() как в @ 1012 * ответе @ 1013 * Девеша *.Вы можете проверить документы для более подробной информации

2 голосов
/ 10 мая 2019

Вы можете использовать словарь для этого, где вы получите и индекс, и элемент списка is_censored, используя enumerate, а затем составите пары ключ-значение соответственно!

is_censored = [[True, True], [False, True], [False, False]]

res = {'is_censored_{}'.format(idx+1):item for idx, item in enumerate(is_censored)}
print(res)

Вывод будет

{'is_censored_1': [True, True], 'is_censored_2': [False, True], 'is_censored_3': [False, False]}
1 голос
/ 10 мая 2019
is_censored = [[True, True], [False, True], [False, False]]

res ={'is_censored_{}'.format(i+1):is_censored[i] for i in range(len(is_censored))}

выход

{'is_censored_1': [True, True],
 'is_censored_2': [False, True],
 'is_censored_3': [False, False]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...