2 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
試試這個(gè),它會(huì)得到你想要的輸出:
lst=[{'total': {'last_day': '7'}},
{'total': {'progress': '07/04'}},
{'total': {'piecies': '3008'}},
{'total': {'week': ['16.0']}},
{'total': {'week': ['17.0']}},
{'total': {'week': ['15.0']}},
{'total': {'week': ['17.0']}},
{'total': {'week': ['16.0']}},
{'total': {'week': ['13.0']}},
{'total': {'week': ['6.0']}},
{'tkts': [{'tktvalue': '13.5'}]},
{'tkts': [{'month': {'consuntivato_pezzi': '2346'}}]},
{'tkts': [{'month': {'consuntivato_euro': '31671.00'}}]},
{'tkts': [{'month': {'preventivato_pezzi': '9897'}}]}
]
d={} # the dictionary that will hold the result
for dd in lst: # for each dictionary in the list of dictionaries
for key,value in dd.items():
if key not in d: # key does not exist in dictionary d
d[key]=value
else: # key exists in dictionary d
if isinstance(value,dict): # check if the value is a dictionary or a list
for key1,value2 in value.items():
if key1 not in d[key]:
d[key]={**d[key],**value} # combine the dictionaries
else:
d[key][key1].append(value2[0])
elif isinstance(value,list): # check if the value is a list
if isinstance(value[0],dict): # check if the value is a dictionary or a list
for key1,value2 in value[0].items():
if key1 not in d[key][0]:
d[key][0]={**d[key][0],**value[0]}
else:
d[key][0][key1]={**d[key][0][key1],**value2}
print(d)
輸出:{'total': {'last_day': '7', 'progress': '07 / 04 ',' piecies ':' 3008 ',' week ': ['16 .0', '17 .0' , '15 .0', '17 .0', '16 .0', '13 .0',' 6.0 ']},' tkts ': [{' tktvalue ': '13 .5', '月' :{'consuntivato_pizzi':'2346','final_euro':'31671.00','quoted_pieces':'9897'}}]}

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
嘗試在此處使用默認(rèn)列表。您可以了解有關(guān)它們的更多信息collections.defaultdict
from collections import defaultdict
result = defaultdict(list)
for sequence in (yourdict):
for keys,dictionary in sequence.items():
result[keys].append(dictionary)
print(dict(result))
輸出 :
{'total': [{'last_day': '7'}, {'progress': '07/04'}, {'piecies': '3008'}, {'week': ['16.0']}, {'week': ['17.0']}, {'week': ['15.0']}, {'week': ['17.0']}, {'week': ['16.0']}, {'week': ['13.0']}, {'week': ['6.0']}], 'tkts': [[{'tktvalue': '13.5'}], [{'month': {'consuntivato_pezzi': '2346'}}], [{'month': {'consuntivato_euro': '31671.00'}}], [{'month': {'preventivato_pezzi': '9897'}}]]}
添加回答
舉報(bào)