Данные
Мне любопытно, смогу ли я преобразовать следующие данные
old_data = {
"key0": [obj0, obj1],
"key1": [obj2, obj3]
}
в
data = {
"key0": [obj0.id, obj1.id],
"key1": [obj2.id, obj3.id]
}
, используя диктовку.
Таким образом, в основном, просто заменив эти объекты списка одним атрибутом самого объекта.Все объекты относятся к одному типу и, следовательно, имеют атрибут id
.
Понимание Dict
Я нашел следующее решение, которое не работает:
data = {
key: [obj.id]
for key, obj_list in old_data.items()
for obj in obj_list
}
Задача
Результирующий словарь просто содержит списки с ровно одним значением (последнее значение, которое было повторено) из-за этой строки:
key: [obj.id]
создает каждый раз только новыйlist с одним значением.
Поэтому вместо создания нового списка я хотел append
new obj_id
s для существующего списка, но я не знаю, как.Я думаю, это должно выглядеть примерно так:
key: data[key].append(obj.id)
Но, очевидно, это также не может работать, потому что data
еще не назначен, и даже если он будет: первый obj.id
не можетбыть добавленным, потому что список никогда не был инициализирован.
(я использую Python 3.7)