Перемешивание ключей и значений в списке словарей в python

Другим вариантом, если производительность является проблемой, является использование расширения data.table для расширения reshape2 расплава & amp; dcast functions

( Ссылка: эффективная перестройка с использованием data.tables )

library(data.table)

setDT(dat1)
dcast(dat1, name ~ numbers, value.var = "value")

#          name          1          2         3         4
# 1:  firstName  0.1836433 -0.8356286 1.5952808 0.3295078
# 2: secondName -0.8204684  0.4874291 0.7383247 0.5757814

И, как и в data.table v1.9.6, мы можем использовать несколько столбцов

## add an extra column
dat1[, value2 := value * 2]

## cast multiple value columns
dcast(dat1, name ~ numbers, value.var = c("value", "value2"))

#          name    value_1    value_2   value_3   value_4   value2_1   value2_2 value2_3  value2_4
# 1:  firstName  0.1836433 -0.8356286 1.5952808 0.3295078  0.3672866 -1.6712572 3.190562 0.6590155
# 2: secondName -0.8204684  0.4874291 0.7383247 0.5757814 -1.6409368  0.9748581 1.476649 1.1515627

0
задан bayman 23 March 2019 в 03:08
поделиться

1 ответ

Вы можете использовать defaultdict для этого:

>>> from collections import defaultdict

>>> ret = defaultdict(list)
>>> for d in data:
...     ret[d['color']].append(d['id'])
... 
>>> ret
defaultdict(<class 'list'>, {'red': [123, 329], 'blue': [242]})

Я не думаю, что вам нужно возвращать dict для каждого ключа, так как ключи по определению уникальны в вашем случае, но если вам нужно им нравится, что вы можете использовать понимание списка следующим образом:

>>> [{key: value} for key, value in ret.items()]
[{'red': [123, 329]}, {'blue': [242]}]
0
ответ дан Francisco Couzo 23 March 2019 в 03:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: