如何将字典列表转换为Bunch对象



我有一个下列字典的列表:

[{'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似乎是最近的,但它也处于非活动状态。

使用mapofBunch.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})

相关内容

  • 没有找到相关文章

最新更新