python - 等价于 Python 的 Lua 的 pairs()
问题描述
我需要一个通用 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-indexing 和 1-indexing 进行了更正)。
这样的 API 存在吗?
解决方案
您可以通过测试输入类型来模拟“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 开始。
推荐阅读
- reactjs - SetState 外体 reactjs
- python - 如何让熊猫在非均匀 x 网格上执行滚动平均
- sql-server - 临时表列名敏感度
- python - 如何从python中的日期时间中提取日期和小时?
- c - 组织多头数据记录
- xpages - 什么是控件的“绑定”属性以及如何使用它?
- sql-loader - 使用 sql loader 限制无效的日期格式数据
- google-apps-script - 在 Google Apps 脚本上使用带有自定义函数的触发器
- r - 将行名与列中包含的字符串匹配
- android - 如何在 android studio 中停止 FusedLocationProviderClient?