簡體   English   中英

Python - 根據給定的鍵數動態創建新字典中的鍵數:值:另一個字典中的值

[英]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},
]

我的目標是為我得到的給定項目創建一個動態字典。 例如,如果我得到第一個項目,我將要產生:

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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM