如何使用Python根据部分值将字典拆分成几个字典

Mar*_*ali 7 python

我有以下字典

dict={'sku1':'k-1','sku2':'k-2','sku3':'b-10','sku4':'b-1','sku5':'x-1', 'sku6':'x-2'}
Run Code Online (Sandbox Code Playgroud)

如何根据价值的首字母获得单独的字典?喜欢:

dict1={'sku5':'x-1','sku6':'x-2'}
dict2={'sku1':'k-1','sku2':'k-2'}
dict2={'sku3':'b-10','sku4':'b-1'}
Run Code Online (Sandbox Code Playgroud)

我开始

for an_item in thevalues_ofdict:
    Splitted_Pcodes.append(int(an_item.split("-")[0]))
    for i in Splitted_Pcodes:
        if i=='x':
Run Code Online (Sandbox Code Playgroud)

但是我将如何找到整个最初的二元元素

Bra*_*roy 9

从某种意义上说,我认为这是您想要做的。结果是一个主(“母”)字典,该字典具有所有可能的首字母作为键,并具有对应的字典作为值。

from collections import defaultdict
d = {'sku1': 'k-1','sku2': 'k-2','sku3': 'b-10' ,'sku4': 'b-1', 'sku5': 'x-1', 'sku6':'x-2'}

mother = defaultdict(dict)
for key, val in d.items():
    mother[val[0]][key] = val

mother = dict(mother)
print(mother)
Run Code Online (Sandbox Code Playgroud)

输出:

{'k': {'sku1': 'k-1', 'sku2': 'k-2'},
 'b': {'sku3': 'b-10', 'sku4': 'b-1'},
 'x': {'sku5': 'x-1', 'sku6': 'x-2'}}
Run Code Online (Sandbox Code Playgroud)

然后,您可以像这样使它们易于访问。

k_dict = mother['k']
b_dict = mother['b']
x_dict = mother['x']
Run Code Online (Sandbox Code Playgroud)

如果您想要更多控制权并希望提供键的大小,我们可以这样做:

{'k': {'sku1': 'k-1', 'sku2': 'k-2'},
 'b': {'sku3': 'b-10', 'sku4': 'b-1'},
 'x': {'sku5': 'x-1', 'sku6': 'x-2'}}
Run Code Online (Sandbox Code Playgroud)