如何解决Python - 根据给定数量的键:来自另一个字典的值动态创建新字典中的键:值数量
我有一个从数据库中获取的词典列表。每个字典最多可以有 4 个值字段(取决于此项目的组数)。例如:
list_of_items = [
{'name':'i am first','value_group_1':10,'value_group_2':20},{'name':'i am second','value_group_1':20,'value_group_2':40}
{'name':'i am third','value_group_1':15,'value_group_2':30,'value_group_3':40},{'name':'i am forth','value_group_2':40,'value_group_3':40,'value_group_4':40},]
我的目标是为每个我得到的给定项目创建一个动态字典。 例如,如果我得到第一个我想要产生的项目:
item = list_of_items[0] # first item happen to have 2 groups
final_dict = {'calculated_value_g1':item.get('value_group_1')*100,'calculated_value_g2':item.get('value_group_2')*100}
如果我得到第 4 项,我将要放弃:
item = list_of_items[3] # forth item happen to have 4 groups
final_dict = {'calculated_value_g1':item.get('value_group_1')*100,'calculated_value_g2':item.get('value_group_2')*100,'calculated_value_g3':item.get('value_group_3')*100,'calculated_value_g4':item.get('value_group_4')*100}
解决方法
您可以开始将您的逻辑分解成更小的部分,遍历 list_of_items
,过滤 keys
,生成每个 key
的新名称,计算新值,最后构建dictionary
,例如:
list_of_items = [
{'name':'i am first','value_group_1':10,'value_group_2':20},{'name':'i am second','value_group_1':20,'value_group_2':40},{'name':'i am third','value_group_1':15,'value_group_2':30,'value_group_3':40},{'name':'i am forth','value_group_2':40,'value_group_3':40,'value_group_4':40},]
def create_dict(d):
output = {}
for k,v in d.items():
if k == 'name': continue
new_key = f"calculated_value_g{k[-1]}"
new_value = v * 100
output[new_key] = new_value
return output
results = [
create_dict(d) for d in list_of_items
]
for d in results:
print(d)
>>> {'calculated_value_g1': 1000,'calculated_value_g2': 2000}
>>> {'calculated_value_g1': 2000,'calculated_value_g2': 4000}
>>> {'calculated_value_g1': 1500,'calculated_value_g2': 3000,'calculated_value_g3': 4000}
>>> {'calculated_value_g1': 2000,'calculated_value_g2': 4000,'calculated_value_g3': 4000,'calculated_value_g4': 4000}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。