所以,我一直在寻找类似于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)
感谢任何帮助。
答案 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,viewitems
或iteritems
,以避免制作包含list
键/值对副本的全新dict
)是要走的路:
for k, v in Dictionary.items(): # For performance, use .viewitems() on Py2.7, .items() on Py3.x
print(k, v)