Python - 根据另一个字典中给定的 key:values 数量,在新字典中动态创建 key:values 数量
Python - dynamically create number of key:values in a new dictionary, based on given number of key:values from another dictionary
我有一个从我的数据库中获得的字典列表。每个字典最多可以有 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_1':20, 'value_group_2':40, 'value_group_3':40, 'value_group_4':40},
]
我的目标是为每个我得到的给定项目创建一个动态字典。
例如,如果我得到第一个项目,我将要 yield:
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_1':20, '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}
我有一个从我的数据库中获得的字典列表。每个字典最多可以有 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_1':20, 'value_group_2':40, 'value_group_3':40, 'value_group_4':40},
]
我的目标是为每个我得到的给定项目创建一个动态字典。 例如,如果我得到第一个项目,我将要 yield:
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_1':20, '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}