Python中字典解包:是否存在类似列表的简洁拆分方法?
Python字典的快捷拆分方法
针对你提出的字典拆分需求,有两种简洁实现方案,可根据是否需要保留原字典来选择:
方案1:允许修改原字典的写法
如果不需要保留原字典的完整内容,直接用pop()方法即可实现一行拆分:
i_ate = {'apple': 2, 'beetroot': 0, 'cinnamon': 3, 'donut': 8} # Shortcut apples, rest = i_ate.pop('apple'), i_ate # 结果验证 apples # 输出: 2 rest # 输出: {'beetroot': 0, 'cinnamon': 3, 'donut': 8}
注意:此方法会直接从原字典i_ate中移除'apple'键,原字典内容会被修改。
方案2:不修改原字典的写法
若需要保留原字典,可结合字典解包与海象运算符(Python 3.8及以上版本支持)实现一行拆分:
i_ate = {'apple': 2, 'beetroot': 0, 'cinnamon': 3, 'donut': 8} # Shortcut apples, rest = (rest_copy := {**i_ate}).pop('apple'), rest_copy # 结果验证 apples # 输出: 2 rest # 输出: {'beetroot': 0, 'cinnamon': 3, 'donut': 8} i_ate # 输出: {'apple': 2, 'beetroot': 0, 'cinnamon': 3, 'donut': 8}(原字典未被修改)
这里先通过{**i_ate}创建原字典的副本,再用海象运算符将副本绑定到rest_copy,最后从副本中取出目标键值并完成拆分。
如果你的Python版本低于3.8,也可以用两行代码实现无修改拆分,依然比原繁琐写法简洁:
rest = {**i_ate} apples = rest.pop('apple')
内容的提问来源于stack exchange,提问作者ElRudi
相关产品推荐
相关产品推荐

