如何合并两个字典的dict_keys实例并保留原有顺序?
合并两个字典的键并保留指定顺序的替代方法
已知你有两个键不重复的字典ns和no,需要合并它们的键并保留「先ns的键,再no的键」的顺序,除了list(ns.keys()) + list(no.keys()),还有以下几种方法:
1. 使用itertools.chain(惰性迭代,内存友好)
itertools.chain可以将多个可迭代对象串联成一个迭代器,不需要提前生成完整列表,适合处理大数据量的场景:
import itertools combined_keys = itertools.chain(ns.keys(), no.keys()) # 直接用于enumerate遍历 for idx, key in enumerate(combined_keys): # 你的计算逻辑 pass
这个方法返回的是迭代器,只能遍历一次,但内存占用极低。
2. 生成器表达式(轻量惰性迭代)
用生成器表达式也能实现惰性串联,无需导入额外模块:
combined_keys = (key for d in (ns, no) for key in d.keys()) # 同样可直接配合enumerate使用 for idx, key in enumerate(combined_keys): # 你的计算逻辑 pass
3. 字典合并(Python 3.7+)
Python 3.7及以上版本的字典会保留插入顺序,利用字典合并语法可以直接得到按顺序排列的键集合:
# 合并字典后取键,顺序为ns的键在前,no的键在后 combined_keys = {**ns, **no}.keys()
这个方法会创建一个新的合并字典,如果两个字典体积较大,会占用额外内存,但好处是dict_keys对象支持多次遍历。
内容的提问来源于stack exchange,提问作者oakca
相关产品推荐
相关产品推荐

