Преобразование массива словарей Python в словарь Python с использованием пониманий - PullRequest
0 голосов
/ 02 мая 2018

У меня есть массив словарей Python, который выглядит следующим образом:

[
 {
  "pins": [1,2],
  "group": "group1"
 },
 {
  "pins": [3,4],
  "group": "group2"
 }
]

Я хочу преобразовать этот массив словарей в следующий словарь:

{ 1: "group1", 2: "group1", 3: "group2", 4: "group2" }

Я написал следующий двойной цикл for для достижения этой цели, но мне было любопытно, есть ли более эффективный способ сделать это (может быть, понимание?):

new_dict = {}
for d in my_array:
    for pin in d['pins']:
        new_dict[pin] = d['group']

1 Ответ

0 голосов
/ 02 мая 2018

Давайте попробуем понять словарь:

new_dict = {
    k : arr['group'] for arr in my_array for k in arr['pins']
}

Это эквивалентно:

new_dict = {}
for arr in my_array:
    for k in arr['pins']:
        new_dict[k] = arr['group']

print(new_dict)
{1: 'group1', 2: 'group1', 3: 'group2', 4: 'group2'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...