根据python中的键将字典拆分为不同的字典?



假设我有一个字典:

d = {'a_c':1,'b_c':2,'a_d':3,'b_d':4}

如何根据键的最后一个单词/字母('c','d')像这样分成两个?

d1 = {'a_c':1,'b_c':2}
d2 = {'a_d':3,'b_d':4}

这是一个方法:

from collections import defaultdict
d = {'a_c':1,'b_c':2,'a_d':3,'b_d':4}
key = lambda s: s.split('_')[1]
res = defaultdict(dict)
for k, v in d.items():
res[key(k)][k] = v
print(list(res.values()))

输出:

[{'a_c': 1, 'b_c': 2}, {'a_d': 3, 'b_d': 4}]

结果是按键的最后一个字母划分的字典列表。

你可以尝试这样做:

func = lambda ending_str: {x: d[x] for x in d.keys() if x.endswith(ending_str)}
d1 = func('_c')
d2 = func('_d')

另外,就像Marc在评论中提到的,字典中不应该有两个相同的name键。在这种情况下,它将只保留最后一个键/值对。

最新更新