关于 python 中一个字典操作的问题,按条件分隔

从数据库获取到的数据是这样的一个字典

{
    'q_1': 9, 'q_2': 12, 'q3': 22, 'q4': 2, 'q5': 6,
    'w_1': 9, 'w_2': 12, 'w_3': 22, 'w_4': 2, 'w_5': 6,
    'e_1': 9, 'e_2': 12, 'e_3': 22, 'e_4': 2, 'e_5': 6,
    'r_1': 9, 'r_2': 12, 'r_3': 22, 'r_4': 2, 'r_5': 6
}

怎么 把它分割成这个样子

{
    'q': {'q_1': 9, 'q_2': 12, 'q3': 22, 'q4': 2, 'q5': 6},
    'w': {'w_1': 9, 'w_2': 12, 'w_3': 22, 'w_4': 2, 'w_5': 6},
    ...
}

现在我是通过 for 干的 有没有简单便捷的方法呢。谢谢

阅读 2.3k
1 个回答

可以用itertools.groupby,参考下这篇文章:https://segmentfault.com/a/11...

from itertools import groupby
d = {
    'q_1': 9, 'q_2': 12, 'q3': 22, 'q4': 2, 'q5': 6,
    'w_1': 9, 'w_2': 12, 'w_3': 22, 'w_4': 2, 'w_5': 6,
    'e_1': 9, 'e_2': 12, 'e_3': 22, 'e_4': 2, 'e_5': 6,
    'r_1': 9, 'r_2': 12, 'r_3': 22, 'r_4': 2, 'r_5': 6
}

new_dict = dict()
items = sorted(d.items())
for key, group in groupby(items, key=lambda x: x[0][0]):
    new_dict[key] = dict(group)
print(new_dict)
推荐问题
宣传栏