使用 3 个字段创建一个数据类:
@dataclass()
class Animals:
n: int
id: int
animal: List[str] = field(default_factory=list)
有一组字典:
b = [{'n': 1, 'id': 1}, {'n': 4, 'id': 2}, {'n': 1, 'id': 3}]
创建数据类时,我们会得到一个带有空动物字段的对象:
b = [Animals(n=1, id=1, animal=[]), Animals(n=4, id=2, animal=[]), Animals(n=1, id=3, animal=[]}]
还有另一个字典列表:
initial = [
{'animal': {'cats': ['шотландец', 'сфинкс', 'манчкин']}, 'id': 1},
{'animal': {'dogs': ['овчарка', 'бульдог'], 'fish': ['окунь'], 'cats': ['сфинкс', 'ориентал']},'id': 2},
{'animal': {'dogs': ['овчарка', 'корги'], 'birds': ['воробей'], 'fish': ['сельдь']}, 'id': 3}
]
在以下代码的帮助下,我得到了所需品种的列表:
attr = ('cats', 'dogs', 'birds')
for obj in initial:
poroda = []
for type in obj['animal']:
if type in attr:
for name in obj['animal'][type]:
poroda.append(name)
print(poroda)
如何将每个列表添加到此代码中的相应对象以获得以下内容:
b = [Animal(n=1, id=1, animal=['шотландец', 'сфинкс', 'манчкин']), Animal(n=4, id=2, animal=['овчарка', 'бульдог', 'сфинкс', 'ориентал']), Animal(n=1, id=3, animal= ['овчарка', 'корги', 'воробей'])]
结果:
如果我正确理解了所有内容,那么您需要这样的东西:
和对象列表: