Python 按对象属性对对象字典进行分组
我有一个类对象的目录Python 按对象属性对对象字典进行分组,python,Python,我有一个类对象的目录Metric。每个度量对象都有一个名为类别的属性(例如,“cat1”、“cat2”、…)。按类别排列dict最聪明的方法是什么 我现在的解决方案是通过对每个对象进行迭代,然后再次迭代并将每个对象分配给一个类别来创建一组所有类别,但我认为可能有一种更有效的方法 我所拥有的: {'a': <__main__.Metric at 0xb1e3470>, 'b': <__main__.Metric at 0xb14f7b8>, 'c': <__mai
Metric
。每个度量
对象都有一个名为类别
的属性(例如,“cat1”、“cat2”、…)。按类别排列dict最聪明的方法是什么
我现在的解决方案是通过对每个对象进行迭代,然后再次迭代并将每个对象分配给一个类别来创建一组所有类别,但我认为可能有一种更有效的方法
我所拥有的:
{'a': <__main__.Metric at 0xb1e3470>,
'b': <__main__.Metric at 0xb14f7b8>,
'c': <__main__.Metric at 0xb160828>,
'd': <__main__.Metric at 0x5ee9128>,
'e': <__main__.Metric at 0xb14f550>,
'f': <__main__.Metric at 0xb14ff98>,
'g': <__main__.Metric at 0xb14fa58>,
...}
{'a':,
“b”:,
“c”:,
“d”:,
“e”:,
‘f’:,
‘g’:,
...}
我想要的是:
{'cat1': [<__main__.Metric at 0xb160828>, ...]
'cat2': [<__main__.Metric at 0xb14f550>, ...],
...}
{'cat1':[,…]
“第二类”:[,…],
...}
您应该像这样使用:
其中,your_dict
是问题中提到的保存当前dict的结构您应该使用如下方式:
其中,您的dict
是问题中提到的保存当前dict的结构您可以执行以下操作:
category_dict = {}
for obj in metric_dict.values():
cat = obj.category
if cat not in category_dict:
category_dict[cat] = []
category_dict[cat].append(obj)
这将为您提供一个类别字典,其中包含一个度量列表:
{ 'cat_1': [Metric, Metric, ...],
'cat_2': [Metric, Metric, ...],
...
}
您可以执行以下操作:
category_dict = {}
for obj in metric_dict.values():
cat = obj.category
if cat not in category_dict:
category_dict[cat] = []
category_dict[cat].append(obj)
这将为您提供一个类别字典,其中包含一个度量列表:
{ 'cat_1': [Metric, Metric, ...],
'cat_2': [Metric, Metric, ...],
...
}
像这样的
cat_dict = dict((obj.category, obj) for obj in metric_dict.itervalues())
像这样的
cat_dict = dict((obj.category, obj) for obj in metric_dict.itervalues())
根据所需的输出,dict的值为list
,这使我认为可能存在重复的类别yEah,这仅给出每个类别的一个度量。根据所需的输出,有许多dict的值是list
,这使我认为可能存在重复的类别yEAH,这只给出了每个类别的一个度量。有很多