輸入:
values = [{'priority': 'P2', 'subdomain': 'SD2', 'test': '2653'},
{'priority': 'P3', 'subdomain': 'SD1', 'test': '2656'},
{'priority': 'P2', 'subdomain': 'SD2', 'test': '2651'},
{'priority': 'P2', 'subdomain': 'SD2', 'test': '2652'},
{'priority': 'P3', 'subdomain': 'SD1', 'test': '2655'}]
應轉換為:
values = [{'priority': 'P2', 'subdomain': 'SD2', 'test': '2653,2651,2652'},
{'priority': 'P3', 'subdomain': 'SD1', 'test': '2656,2655'}]
key 的值不是固定的,它會根據用戶的需要而改變。
我試過:
result_dict["test"] = values[0]["test"]
final_output = []
I = 1
for value in range(len(values)):
print("value", value)
for j in range(I, len(values)):
print("j", j)
I = I 1
if values[value]["priority"] == values[j]["priority"] \
and values[value]["subdomain"] == values[j]["subdomain"]:
final_output = []
result_dict["priority"] = values[value]["priority"]
result_dict["subdomain"] = values[value]["subdomain"]
result_dict["test"] = result_dict["test"] "," values[j]["test"]
count = count 1
final_output.append(result_dict)
print(final_output)
請幫我解決這個問題。
uj5u.com熱心網友回復:
回圈串列并構建一個新字典:
def combine_dict_rows(values):
result = {}
for row in values:
if row['priority'] not in result:
result[row['priority']] = {}
if row['subdomain'] not in result[row['priority']]:
result[row['priority']][row['subdomain']] = []
result[row['priority']][row['subdomain']].append(row['test'])
return result
values = [{'priority': 'P2', 'subdomain': 'SD2', 'test': '2653'},
{'priority': 'P3', 'subdomain': 'SD1', 'test': '2656'},
{'priority': 'P2', 'subdomain': 'SD2', 'test': '2651'},
{'priority': 'P2', 'subdomain': 'SD2', 'test': '2652'},
{'priority': 'P3', 'subdomain': 'SD1', 'test': '2655'}]
print(combine_dict_rows(values))
輸出:
{'P2': {'SD2': ['2653', '2651', '2652']}, 'P3': {'SD1': ['2656', '2655']}}
uj5u.com熱心網友回復:
您可以使用groupby并使用相同的鍵進行排序:
from itertools import groupby
def key_func(d, keys=['priority', 'subdomain']):
return [d.get(key, "") for key in keys]
new_li=[]
for k,v in groupby(sorted(values, key=key_func), key=key_func):
vals=list(v)
di=vals[0]
di['test']=','.join(d['test'] for d in vals)
new_li.append(di)
>>> new_li
[{'priority': 'P2', 'subdomain': 'SD2', 'test': '2653,2651,2652'}, {'priority': 'P3', 'subdomain': 'SD1', 'test': '2656,2655'}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/408347.html
標籤:
下一篇:在這種情況下如何處理唯一性?
