假设我有一个字典:
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键。在这种情况下,它将只保留最后一个键/值对。