Lua" Generic For Loop"对于Python?

时间:2015-11-12 20:28:34

标签: python dictionary lua

所以,我一直在寻找类似于Lua" Generic For Loop"在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

这将做的是,浏览字典,然后打印出INDEX和VALUE。我如何在Python中做这样的事情?

我知道有这个:

for i in Dictionary: print(i)

但那只是打印INDEX。我想访问INDEX和VALUE。类似的东西:

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

感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

您正在寻找items。迭代dict只会给你键,所以你必须这样做:

for key in my_dict:
    x = my_dict[key]

你想要的是这个:

for key, value in my_dict.items():
    # do something

答案 1 :(得分:3)

两种方式:

for i, v in Dictionary.items():
    print(i, v) #outputs pairs as key value
for tup in Dictionary.items(): #same thing
    print(tup) # outputs pairs as (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然后在打印函数中传递的每个参数之间自动添加空格分隔符。

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

  

如果它还不完全清楚,在tup表达式中你分别以tup [0]和tup [1]的形式访问键和值。对于key,在my_dict.items()中的val:...和对于my_dict.items()中的tup:key,val = tup是相同的设置。关键是你可以使用元组解包在for循环中进行精细内联。

答案 2 :(得分:1)

items方法(或Py2,viewitemsiteritems,以避免制作包含list键/值对副本的全新dict )是要走的路:

for k, v in Dictionary.items():  # For performance, use .viewitems() on Py2.7, .items() on Py3.x
    print(k, v)
相关问题