我有一本看起來像這樣的字典:
dict = {
"name 1": "abc..",
"location 1": "abc..",
"name 2": "abc..",
"location 2": "abc"
.
.
}
我的目標是將其拆分為 n 個其他子字典(取決于第一個字典中的整數范圍),以獲得如下結果:
#output
output_dict = {
"dict 1": {
"name 1" : "abc..",
"location 1" : "abc.."
},
"dict 2": {
"name 2": "abc",
"location 2": "abc"
}
.
.
}
uj5u.com熱心網友回復:
您可以瀏覽字典的專案并通過從原始鍵構建子字典鍵來逐步填充輸出字典:
d = {
"name 1": "abc..",
"location 1": "abc..",
"name 2": "abc..",
"location 2": "abc"
}
d2 = dict() # empty output
for k,v in d.items(): # go through all keys and values
dk = f"dict {k.split()[-1]}" # build sub-dict key
d2.setdefault(dk,dict())[k]=v # add key:value to sub-dict
print(d2)
{'dict 1': {'name 1': 'abc..', 'location 1': 'abc..'},
'dict 2': {'name 2': 'abc..', 'location 2': 'abc'}}
如果你被允許使用庫,groupby(來自 itertools)可以幫助解決這個問題:
from itertools import groupby
d2 = {dk:dict(g) for dk,g
in groupby(d.items(),lambda kv:f"dict {kv[0].split()[-1]}")}
uj5u.com熱心網友回復:
迭代這些值,并相應地分配它們:
new_dict = {}
for k, v in my_dict.items():
if "dict " k.split()[1] in new_dict:
new_dict["dict " k.split()[1]][k] = v
else:
new_dict["dict " k.split()[1]] = {k: v}
>>> new_dict
{ 'dict 1': {
'name 1': 'abc..',
'location 1': 'abc..'},
'dict 2': {
'name 2': 'abc..',
'location 2': 'abc'}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358213.html
