我需要一个通用的API来将Python对象作为键/索引和值对进行迭代。这样:
for k,v in pairs({"foo": "bar"}):
print(k, v)输出"foo bar",和
for i,v in pairs(["foo", "bar"]):
print(i, v)输出"0 foo“和"1 bar",就像Lua的等价物一样(除了0索引和1索引的校正)。
这样的API存在吗?
发布于 2019-09-27 22:45:57
您可以通过测试输入类型来模拟"pairs“函数,在字典的情况下使用items,在列表、元组或enumerate的情况下使用enumerate,这将在任何迭代器上工作:
def pairs(o):
if isinstance(o,dict):
return o.items()
else:
return enumerate(o)
for k,v in pairs({"foo": "bar"}):
print(k, v)
for i,v in pairs(["foo", "bar"]):
print(i, v)打印:
foo bar
0 foo
1 bar另外:更改为return enumerate(o,1)以使索引从1开始。
发布于 2019-09-27 22:44:37
对于dict,请使用items方法:
for k, v in {"foo": "bar"}.items():
print(k, v)列表没有等价物。但是,您可能需要检查itertools documentation中的grouper配方。
要将字典转换为可与grouper一起使用的迭代值,请使用itertools.chain.from_iterable({"a": 1, "b": 2}.items())。
https://stackoverflow.com/questions/58136721
复制相似问题