Python中的Lua的“通用For循环”?

所以,我一直在寻找类似于 Lua 的“通用 For 循环”在 Python 中的实现方式。

我一直在使用字典处理简单的基于文本的 Python 游戏。

下面是我想要实现的代码(在 Lua 中):

Dictionary = {
"Red" = "There is some red paint on the walls.",
"Green" = "There is a little bit of green paint on the floor.",
}

for i, v in pairs(Dictionary) do
print(i, v)
end

这将遍历字典,然后打印出索引和值。我该如何在 Python 中实现类似的功能呢?

我知道有这个:

for i in Dictionary: print(i)

但这只会打印索引。我想同时访问索引和值。像这样:

for i, v in Dictionary:
    print(i, v)

非常感谢您的帮助。

点赞
用户2588818
用户2588818

你正在寻找items。遍历字典只会给你键,所以你必须这样做:

for key in my_dict:
    x = my_dict[key]

你想要的是这个:

for key, value in my_dict.items():
    # do something
2015-11-12 20:29:47
用户364696
用户364696

items 方法(在 Py2 中,使用 viewitemsiteritems 可以避免创建包含键/值对副本的新 list)是正确的方式:

for k, v in Dictionary.items():  # 为了性能,在 Py2.7 上使用 .viewitems(),在 Py3.x 上使用 .items()
    print(k, v)
2015-11-12 20:30:35
用户5323213
用户5323213

两种方法:

for i, v in Dictionary.items():
    print(i, v) #输出键值对
for tup in Dictionary.items(): #同样的操作
    print(tup) # 输出键值对作为 (key,value) 的形式

或者

for key in Dictionary:
    print(key,Dictionary[key])

回复评论:

>>> d = {1:1,2:2,3:3,4:4}
>>> for item in d.items(): print(item)

(1, 1)
(2, 2)
(3, 3)
(4, 4)
>>> for key,val in d.items(): print(key,val)

1 1
2 2
3 3
4 4

这是因为在第一个循环中,'item' 是一个元组,而元组的 __repr__ 使用括号和逗号,而第二个循环则将元组拆分为两个变量, print 然后自动在传递给 print 函数的参数之间添加一个空格分隔符。

正如 Two-Bit Alchemist 解释的那样:

但如果还不是很清楚,使用 tup 形式可以通过 tup [0]tup [1] 访问 key 和 value。for key,val in my_dict.items():......for tup in my_dict.items(): key,val = tup 是相同的设置。重点是,你可以在 for 循环中直接使用元组拆包。

2015-11-12 20:30:44