У меня есть 2 словаря:группа словарей по значению
data1 = [
{key1: 1, key2: 1, count: 3},
{key1: 2, key2: 1, count: 15},
{key1: 3, key2: 1, count: 12},
{key1: 1, key2: 2, count: 13},
{key1: 2, key2: 2, count: 8},
]
data2 = [
key1:{1: 'value1_1', 2: 'value1_2', 3: 'value1_3'},
key2:{1: 'value2_1', 2: 'value2_2'},
]
Я хотел бы объединить эти 2 словаря в 1 большой словарь, который будет выглядеть так:
new_data = [
{key1: 1, key1_name: 'value1_1', key2: 1, key2_name: 'value2_1', count: 3},
{key1: 2, key1_name: 'value1_2', key2: 1, key2_name: 'value2_1', count: 15},
{key1: 3, key1_name: 'value1_3', key2: 1, key2_name: 'value2_1', count: 12},
{key1: 1, key1_name: 'value1_1', key2: 2, key2_name: 'value2_2', count: 13},
{key1: 2, key1_name: 'value1_2', key2: 2, key2_name: 'value2_2', count: 8},
{key1: 3, key1_name: 'value1_3', key2: 2, key2_name: 'value2_2', count: 0},
]
или, может быть, как и :
new_data2 = [
{key1: {
value: 1, name: 'value1_1',
data: [
{value: 1, name: 'value2_1', count: 3},
{value: 2, name: 'value2_2', count: 13},
]},
{key1: {
value: 2, name: 'value1_2',
data: [
{value: 1, name: 'value2_1', count: 15},
{value: 2, name: 'value2_2', count: 8},
]},
{key3: {
value: 2, name: 'value1_3',
data: [
{value: 1, name: 'value2_1', count: 12},
{value: 2, name: 'value2_2', count: 0},
]}]
Примечание1 смотрите, что каждый из Комбен ed dict имеет дополнительную строку с ключом 1 = 3 и ключ 2 = 2, что эта комбинация не имела значения в dict 'data2', поэтому значение счета, которое было присвоено этой строке, равно 0.
Note2: Я не уверен, что такое «лучший» способ представления моих данных, таких как new_data1 или new_data2.
Note3: Я хотел бы сделать это как родовые, насколько это возможно, я не могу предположить, что число уровней (в данном случае 2 уровня, Key1 и Клавишу2) будет исправлен, так что мне нужно, чтобы позволить более высокий уровень, означающий способность обрабатывать 3 или даже 4 уровня. Например (с 3 уровней):
data = [
{key1: 1, key1_name: 'value1_1', key2: 1, key2_name: 'value2_1', key3: 1, key3_name: 'value3_1', count: 3},
{key1: 1, key1_name: 'value1_1', key2: 1, key2_name: 'value2_1', key3: 2, key3_name: 'value3_2', count: 2},
{key1: 1, key1_name: 'value1_1', key2: 2, key2_name: 'value2_2', key3: 1, key3_name: 'value3_1', count: 1},
{key1: 1, key1_name: 'value1_1', key2: 2, key2_name: 'value2_2', key3: 2, key3_name: 'value3_2', count: 6},
]
любая помощь будет оценить. Благодаря
но как добавить "недостающее" row ({key1: 3, key1_name: 'value1_3', key2: 2, key2_name: 'value2_2', count: 0},), а также вы видели мою Note3? потому что этот код не будет работать, если data1 и данные имеют 3 ключа –
Для отсутствующей строки вы хотите count = 0, что это? –
не уверен, что вы имели в виду, строка «messing» должна быть: ({key1: 3, key1_name: 'value1_3', key2: 2, key2_name: 'value2_2', count: 0},) Как я писал в предыдущий комментарий –