根据关键字名称拆分字典



我有一个字典,需要根据关键字名称使用数组中的值将其拆分为更小的字典:

dict = {'1_100': 50, '1_102': 100, '2_100': 150, '2_102': 200, '3_100': 50, '3_102': 100, ...}
narray = [1, 2, 3, 4, 5, ...]

我正试图根据密钥的第一个数字来拆分字典

到目前为止,我已经做了以下工作:

for k, v in dict.items():
for t in narray:
if str(t) + "_" in str(dict.keys()):

我不确定如何进行实际的拆分,并确保在"X_键。请注意,每个键都有不同的数量,所以每隔第n个数字拆分一次是不起作用的

我想要理想的

dict1 = {'1_100': 50, '1_102': 100, ...}
dict2 = {'2_100': 50, '2_102': 100, ...}
dict3 = {'3_100': 50, '3_102': 100, ...}
dictN = {'N_100': 50, 'N_102': 100, ...}

如有任何帮助,将不胜感激

试试这个:

dcts = {str(n): {} for n in narray}
for k, v in dct.items():
dcts[k.split('_')[0]][k] = v
dcts = list(dcts.values())

dct是您的初始字典,dcts是字典列表(您可能需要删除空字典(。

data = {'1_100': 50, '1_102': 100, '2_100': 150, '2_102': 200, '3_100': 50, '3_102': 100}
for k,v in data.items():
name = "dict" + k.split("_")[0]
d = globals().get(name, {})
d.update({k:v})
globals()[name] = d
print(dict1)
print(dict2)
print(dict3)

结果:

{'1_100':50,'1_102':100}

{'2_100':150,'2_102':200}

{'3_100':50,'3_102':100}

最新更新