如何在Python 3中从字典的第二个元素开始迭代?
解决Python 3中跳过字典第一个键值对遍历的问题
首先,你当前的代码里,next(iter(d))只是单独取出了字典的第一个键,但并没有影响后续d.items()的迭代——因为每次调用d.items()都会生成一个全新的迭代器,所以循环还是会从第一个键值对开始遍历。
下面给你两种Python 3下可行的解决方案:
方法1:将键值对转为列表后切片(直观简单)
如果你使用的是Python 3.7及以上版本(此时字典会官方保留插入顺序),可以直接把d.items()转为列表,然后通过切片跳过第一个元素:
d = { 'name': 'ABC', 'age': '23', 'email': 'abc@example.com' } # 转为列表后从索引1开始遍历 for k, v in list(d.items())[1:]: print(f"{k} : {v}")
输出结果:
age : 23 email : abc@example.com
方法2:使用迭代器跳过第一个元素(高效省内存)
如果字典很大,不想额外生成列表占用内存,可以直接操作items()的迭代器,先消耗第一个元素,再遍历剩余部分:
d = { 'name': 'ABC', 'age': '23', 'email': 'abc@example.com' } # 获取items的迭代器 items_iterator = iter(d.items()) # 跳过第一个键值对 next(items_iterator) # 遍历剩余的元素 for k, v in items_iterator: print(f"{k} : {v}")
这个方法和上面的输出结果一致,而且不需要创建整个键值对的列表,性能更优。
注意:Python 3.6及更早版本的字典是无序的,此时“第一个键值对”的概念不存在,所以上述方案仅适用于Python 3.7及以上版本(CPython 3.6虽然也能保留顺序,但属于实现细节,官方正式规范是3.7+)。
内容的提问来源于stack exchange,提问作者Jeyakumar Kasi
相关产品推荐
相关产品推荐

