Python有没有直接的字典解包方法可一行拆分单键与剩余字典?
问题原由
直接对字典执行迭代解包时,Python默认迭代字典的键,因此你运行原有代码得到的first是第一个键名,rest是剩余键组成的列表,和预期的字典结果不符。
一行实现方法
1. Python 3.8+ 最优写法(仅迭代一次字典,性能更高)
利用海象运算符暂存迭代器:
first, rest = dict([next(i := iter(some_obj.items()))]), dict(i)
运行后即可得到你需要的结果:first = {"a": 1},rest = {"b": 2, "c": 3}
2. 兼容Python 3.7及以上版本(无海象运算符)
将字典键值对转为列表后拆分:
first, rest = dict([list(some_obj.items())[0]]), dict(list(some_obj.items())[1:])
注意事项
- 以上写法依赖Python 3.7及以上版本的字典插入序保留特性,低于该版本的Python中字典键值对顺序不固定,无法保证拿到的第一个键值对是你定义时的
"a": 1 - 如果你要指定按特定键拆分,调整迭代逻辑即可。
内容的提问来源于stack exchange,提问作者myfishnameisqwerty
相关产品推荐
相关产品推荐

