python - 将字典列表分组为类对象
问题描述
我有一个字典列表如下,有 4 个键
dict_list = [
{'key1': 'a', 'key2':'b' , 'key3':'p' , 'key4':'q' },
{'key1': 'a', 'key2':'b' , 'key3':'p' , 'key4':'r' },
{'key1': 'a', 'key2':'c' , 'key3':'p' , 'key4':'q' },
{'key1': 'a', 'key2':'c' , 'key3':'p' , 'key4':'r' },
{'key1': 'a', 'key2':'d' , 'key3':'p' , 'key4':'q' }
]
我有一个类 abc 如下
class abc:
def __init__(self, val1, val2, val3, val4)
self.val1 = val1
self.val2 = val2
self.val3 = val3
self.val4 = val4
@classmethod
def from_resultdict(cls, result):
return cls(result['key1'],
result['key2'],
result['key3'],
result['key4'])
我得到了 List[abc] 与以下片段
return [abc.from_resultdict(r) for r in dict_list]
我现在想添加一个 class2 用于根据 key1 和 key2 的值对对象列表进行分组
class class2:
def __init__(self, value1, value2)
self.value1 = value1
self.value2 = value2
self.list_of_abcs: List[abc]
我想为 dict_list 提供 3 个 class2 对象,例如
object1 {
value1 = a
value2 = b
list_of_abcs = [abc_object1 , abc_object2]
}
object2 {
value1 = a
value2 = c
list_of_abcs = [abc_object3 , abc_object4]
}
object3 {
value1 = a
value2 = d
list_of_abcs = [abc_object5]
}
我怎样才能做到这一点?
解决方案
dict
为-objects创建一个,Class2
以便您可以为每个 -object 找到正确的一个Abc
。
class Class2:
def __init__(self, value1, value2)
self.value1 = value1
self.value2 = value2
self.list_of_abcs = []
objects = {}
for abc in abc_list:
key = (abc.val1, abc.val2)
if key not in objects: # create a Class2 instance if it doesn't exist yet
objects[key] = Class2(key[0], key[1])
# append the abc-object to the correct Class2 instance
objects[key].list_of_abcs.append(abc)
推荐阅读
- mysql - MS SQL Server 和 MySQL 通过链接服务器
- ansible - 使用 Ansible 在单个文件夹下归档多个文件夹
- c# - 找不到适合我使用 DI 的类型的构造函数
- c++ - 在 fstream 期间忽略空行
- c# - 如何使用 ASP.NET MVC 将音频文件发送到视图
- go - 使用结构对常量进行分组的副作用是什么
- reactjs - 如何使用反应中的函数根据另一个状态值设置状态值?
- regex - 使用 Fail2ban 限制 Bot 流量
- javascript - 在 Django 中动态添加内联表单集
- windows - WinAppDriver 未检测 LabVIEW 可执行文件中的控件/组件