我有一个下列字典的列表:
[{'Key': 'tag-key-0', 'Value': 'value-0'},
{'Key': 'tag-key-1', 'Value': 'value-1'},
{'Key': 'tag-key-2', 'Value': 'value-2'},
{'Key': 'tag-key-3', 'Value': 'value-3'},
{'Key': 'tag-key-4', 'Value': 'value-4'}]
是否有一种优雅的方式将其转换为Bunch对象?
Bunch(tag-key-0='value-0', tag-key-1='value-1', tag-key-2='value-2', tag-key-3='value-3', tag-key-4='value-4')
我当前的解决方案是:
from bunch import Bunch
tags_dict = {}
for tag in actual_tags:
tags_dict[tag['Key']] = tag['Value']
Bunch.fromDict(tags_dict)
除非您使用的Bunch版本不同于您通过pip install bunch
获得的版本,否则Bunch类没有from_dict
类方法。
使用Bunch(tags_dict)
似乎工作:
>>> from bunch import Bunch
>>> actual_tags = [{'Key': 'tag-key-0', 'Value': 'value-0'},
... {'Key': 'tag-key-1', 'Value': 'value-1'},
... {'Key': 'tag-key-2', 'Value': 'value-2'},
... {'Key': 'tag-key-3', 'Value': 'value-3'},
... {'Key': 'tag-key-4', 'Value': 'value-4'}]
>>> tags_dict = {tag['Key']: tag['Value'] for tag in actual_tags}
>>> print(Bunch(tags_dict))
tag-key-0: value-0
tag-key-1: value-1
tag-key-2: value-2
tag-key-3: value-3
tag-key-4: value-4
有一点需要注意:Bunch似乎并没有被积极维护——它的最后一次提交是在10年前,而且它似乎与Python 3并不完全兼容。AttrDict似乎是最近的,但它也处于非活动状态。
使用map
ofBunch.values()
fromactual_tags
:
actual_tags = [{'Key': 'tag-key-0', 'Value': 'value-0'},
{'Key': 'tag-key-1', 'Value': 'value-1'},
{'Key': 'tag-key-2', 'Value': 'value-2'},
{'Key': 'tag-key-3', 'Value': 'value-3'},
{'Key': 'tag-key-4', 'Value': 'value-4'}]
from bunch import Bunch
tags_dict = Bunch(map(Bunch.values, actual_tags))
print(tags_dict)
print(type(tags_dict))
输出:
tag-key-0: value-0
tag-key-1: value-1
tag-key-2: value-2
tag-key-3: value-3
tag-key-4: value-4
<class 'bunch.Bunch'>
Import:
from bunch import Bunch
选项1:
b = Bunch({t['Key']:t['Value'] for t in actual_tags})
选项2:
b = Bunch.fromDict({t['Key']:t['Value'] for t in actual_tags})