python - 返回给定字典键的下一个键,python 3.6+
问题描述
我正在尝试找到一种方法来获取 Python 3.6+ 的下一个键(已订购)
例如:
dict = {'one':'value 1','two':'value 2','three':'value 3'}
我想要实现的是返回下一个键的功能。就像是:
next_key(dict, current_key='two') # -> should return 'three'
这是我到目前为止所拥有的:
def next_key(dict,key):
key_iter = iter(dict) # create iterator with keys
while k := next(key_iter): #(not sure if this is a valid way to iterate over an iterator)
if k == key:
#key found! return next key
try: #added this to handle when key is the last key of the list
return(next(key_iter))
except:
return False
return False
好吧,这是基本思想,我想我很接近,但是这段代码给出了 StopIteration 错误。请帮忙。
谢谢!
解决方案
循环while k := next(key_iter)
没有正确停止。手动迭代iter
是通过捕获来完成的StopIteration
:
iterator = iter(some_iterable)
while True:
try:
value = next(iterator)
except StopIteration:
# no more items
或者通过将默认值传递给next
并让它StopIteration
为您捕获,然后检查该默认值(但您需要选择一个不会出现在您的可迭代对象中的默认值!):
iterator = iter(some_iterable)
while (value := next(iterator, None)) is not None:
# …
# no more items
但是迭代器本身是可迭代的,因此您可以跳过所有这些并使用普通的 ol' for 循环:
iterator = iter(some_iterable)
for value in iterator:
# …
# no more items
这转化为您的示例:
def next_key(d, key):
key_iter = iter(d)
for k in key_iter:
if k == key:
return next(key_iter, None)
return None
推荐阅读
- java - 拖动 ImageView 和绘图 - Android Studio 4.0
- macos - OSX终端命令使应用程序在启动时运行
- java - Unity 在 Java 中的 Mathf.PingPong
- android - 我正在使用 Firesbase 数据库并在尝试检索图像时出现存储异常
- amadeus - python中的Amadeus网络错误但适用于节点
- javascript - 想要通过选择一个下拉列表来更改多个下拉列表值
- r - 如何斜体和非斜体y轴标签的一部分
- django - Django 模型:设置每日时间段
- google-bigquery - Bigquery dbt_external_tables 外部数据配置
- javascript - JavaScript中对象的反向列表