python字典实际上是如何工作的?

2024-06-02 06:43:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在关注Zed Shaw的“艰难地学习Python,第三版”

以下是本书练习39中的一个小代码示例:

states = {
'Oregon': 'OR',
'Florida': 'FL',
'California': 'CA',
'New York': 'NY',
'Michigan': 'MI' }
for state, abbrev in states.items():
    print "%s is abbreviated %s" % (state, abbrev)
print "-" * 10
for abbrev, state in states.items():
    print "%s is abbreviated %s" % (abbrev, state)

上述程序的输出为:

^{pr2}$

在代码中,没有告诉python什么是状态,什么是缩写。 我的问题是:为什么两个print语句都打印相同? 即使我在第二个for循环中颠倒顺序,python如何显示适当的“state”和“abrevision”?在

如果我想先显示缩写(值),然后显示(键),我该如何编写for循环

注:谢谢你的回答。Stackoverflow告诉我,为了给我的问题添加任何内容,我应该编辑问题,而不是添加新的注释。。。。在


Tags: or代码in示例forisitemsstate
3条回答

字典不是对称的;有一个key和一个value,并且角色是不可逆的。在

函数items()返回元组集合,其中第一个元素是键,第二个元素是值。在第二个循环中,您颠倒了键和值的名称,但变量的名称在程序之外并不重要。在

在第一个例子中,你在说state, abbrev,然后你又在叫{}。当你说state时,你是说那是键,然后缩写是值(字典的键值对)。然后当您调用打印行时,它的键在前,值在后。在

在第二节中,您只是切换了state和abbrev的顺序。程序不知道state是表示状态的全名还是缩写(反之亦然),只知道其中一个是键,另一个是值。在

所以回顾一下:

dictionary = {
key : value
}

在第一节中,键是state,值是abbrev。在第二部分,它是相反的。在

My question is: How come both print statements print the same? How does python display the appropriate "state" and "abbreviation" even if I reverse the order in the second for loop?

如果将变量名更改为a,b,然后b,a,它将执行相同的操作:

for a,b in states.items():
   print "%s is abbreviated %s" % (a,b)


for b,a in states.items():
   print "%s is abbreviated %s" % (b,a)

.items()接受每个键值对并将其作为元组返回。a,b称为tuple unpacking。它接受元组的每个成员,并将其分配给一个单独的变量。在

所以你称这些变量为什么并不重要,因为.items()总是返回一个key,value对,,并且它总是按这个顺序。在

要先写缩写,只需切换print语句中变量的顺序即可:

^{pr2}$

相关问题 更多 >