遍历字典

8

使用print(i,j)print(i)的两种设置返回相同的结果。是否有情况下应该使用其中一种而不是另一种,或者可以互换使用?

desc = {'city': 'Monowi', 'state': 'Nebraska', 'county':'Boyd', 'pop': 1}

for i, j in desc.items():
 print(i, j)

for i in desc.items():
 print(i)

for i, j in desc.items():
 print(i, j)[1]

for i in desc.items():
 print(i)[1]

它们在功能上是等效的,因此使用哪个取决于哪个使您的代码更易读。 - Aran-Fey
1
在Python 3中,它们是 等价的:第一个打印由空格分隔的项目,第二个打印一个元组。 - L3viathan
如果您需要单独使用键和值,请使用第一种方法,这是迭代dict的最常见情况。 - Chris_Rands
3个回答

12

如果在打印语句中去掉括号,两者会有所不同,因为您正在使用Python 2X

desc = {'city': 'Monowi', 'state': 'Nebraska', 'county':'Boyd', 'pop': 1}

for i, j in desc.items():
 print i, j 

for i in desc.items():
 print i

输出

county Boyd
city Monowi
state Nebraska
pop 1
('county', 'Boyd')
('city', 'Monowi')
('state', 'Nebraska')
('pop', 1)

1
在Python 3中,print(i, j)print(i)的输出结果不同print(i, j)会先输出键i,再输出其值jprint(i)会输出一个包含字典键和它对应值的元组。

0

items() 返回一个视图对象,允许您迭代遍历 (key, value) 元组。基本上,您可以像处理元组一样操作它们。文档可能会有所帮助:

iter(dictview) 返回一个迭代器,用于遍历字典中的键、值或项 (表示为元组 (key, value))。

此外,我认为在 Python 3 中,print(i, j)[1] 将会导致错误,因为 print(i, j) 返回 None


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接