我有一本字典如下所示
dict={'sku1':'k-1','sku2':'k-2','sku3':'b-10','sku4':'b-1','sku5':'x-1', 'sku6':'x-2'}我怎样才能根据第一封价值信得到单独的字典?像这样:
dict1={'sku5':'x-1','sku6':'x-2'}
dict2={'sku1':'k-1','sku2':'k-2'}
dict2={'sku3':'b-10','sku4':'b-1'}我一开始
for an_item in thevalues_ofdict:
Splitted_Pcodes.append(int(an_item.split("-")[0]))
for i in Splitted_Pcodes:
if i=='x':但是我将如何找到整个初始的副动元素
发布于 2019-09-06 14:21:41
从某种意义上说,我认为这就是你想要做的。结果是一个主(‘母’)字典,作为键所有可能的第一个字母,并作为相应的分词的值。
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)输出:
{'k': {'sku1': 'k-1', 'sku2': 'k-2'},
'b': {'sku3': 'b-10', 'sku4': 'b-1'},
'x': {'sku5': 'x-1', 'sku6': 'x-2'}}然后,您可以像这样轻松地访问它们。
k_dict = mother['k']
b_dict = mother['b']
x_dict = mother['x']如果您想要更多的控制,并且希望能够给出键的大小,我们可以这样做:
from collections import defaultdict
def split_d(d, key_size=1):
if key_size < 1:
raise ValueError("'key_size' must be 1 or more")
mother = defaultdict(dict)
for key, val in d.items():
mother[val[0:key_size]][key] = val
return dict(mother)
if __name__ == '__main__':
d = {'sku1': 'k-1','sku2': 'k-2','sku3': 'b-10' ,'sku4': 'b-1', 'sku5': 'x-1', 'sku6':'x-2'}
res = split_d(d, 3)
print(res)发布于 2019-09-06 14:26:25
from pprint import pprint
dict={'sku1':'k-1','sku2':'k-2','sku3':'b-10','sku4':'b-1','sku5':'x-1', 'sku6':'x-2'}
newdict = {}
for key, val in dict.items():
v = val[0]
if v not in newdict:
newdict[v] = {}
newdict[v][key] = val
pprint(newdict, indent=4)输出:
{ 'b': {'sku3': 'b-10', 'sku4': 'b-1'},
'k': {'sku1': 'k-1', 'sku2': 'k-2'},
'x': {'sku5': 'x-1', 'sku6': 'x-2'}}发布于 2019-09-06 14:26:51
首先,你不应该把你的字典命名为“迪克”,因为这会扰乱蟒蛇的功能。
my_dict = {'sku1':'k-1','sku2':'k-2','sku3':'b-10','sku4':'b-1','sku5':'x-1', 'sku6':'x-2'}下面是一个列表理解,它返回一个字典列表:
[{k:v for (k,v) in my_dict.items() if v[0] == start_val} for start_val in {val[0] for val in my_dict.values()}]输出:
[{'sku5': 'x-1', 'sku6': 'x-2'},
{'sku3': 'b-10', 'sku4': 'b-1'},
{'sku1': 'k-1', 'sku2': 'k-2'}]它不处理动态字典名称,但这似乎不是问题的重点。
https://stackoverflow.com/questions/57823718
复制相似问题