我有这个密码:
class B():
def __init__(self, valueA, valueB ):
self.valueA = valueA
self.valueB = valueB
def __repr__(self):
return 'B({0},{1})'.format(self.valueA, self.valueB)
我的数据是:
thedata = {'a': [B(1, 0.1),B(2, 0.2)],
'b': [B(3, 0.3),B(4, 0.4)]}
我想做的是根据键从上述字典中提取a
和b
属性到2个新字典。你知道吗
所以,我想:
thedata_a_valueA = {'a':[1, 2]}
thedata_a_valueB = {'a':[0.1, 0.2]}
thedata_b_valueA = {'b':[3, 4]}
thedata_b_valueB = {'b':[0.3, 0.4]}
最后我想要两本字典:
newdict_valueA = {'a':[1, 2], 'b':[3,4]}
newdict_valueB = {'a':[0.1, 0.2], 'b':[0.3,0.4]}
一个解决方案是使用列表,但我必须创建许多列表,循环它们,附加等等
在thedata
上有没有更干净/更快的解决方案?你知道吗
对于字典中的每个键,可以在列表中列出所有期望的项。只需循环
thedata
的项,并为每个键创建一个字典,其中包含valueA
和valueB
的单独项。对于这个任务,dict.setdefault()
属性是个不错的选择。你知道吗请注意,作为一种更简洁的方法,您可以使用
collections.defaultdict()
而不是dict.setdefault()
方法:如果我答对了你的问题,你可以用理解法:
像这样的方法会奏效:
新的价值观:
新dict\u valueB:
相关问题 更多 >
编程相关推荐