2015-11-06 38 views
0

雖然我很想知道Zed使用「state」和「abbrev」,但這個練習大部分都在下沉。 「狀態」(假設這不是一個錯字),是「狀態」的單數版本,但python是否理解爲這樣?沒有「狀態」字典,只有「狀態」。在下面的代碼的第二位之前,「abbrev」也沒有提及,所以python如何知道「abbrev」是什麼? Python不知道我們正在縮寫州名,只是我們已經將兩個大寫字母與州名相關聯。Learn Python the Hard Way練習39

# create a mapping of state to abbreviation 

states = { 
    'Oregon': 'OR', 
    'Florida': 'FL', 
    'California': 'CA', 
    'New York': 'NY', 
    'Michigan': 'MI' 
} 

# print every state abbreviation 

print '-' * 25 
for state, abbrev in states.items(): 
    print "%s is abbreviated %s" % (state, abbrev) 
+0

感謝很快,我無法得到一個帖子預覽,所以看不到有多少糟糕的代碼會看起來一旦張貼。 – Paxton

回答

0

Python不看代碼的「形態」部分。它不轉換「意思是」(複數/奇異)

你可能也寫的第二部分是:

for x, y in states.items(): 
    print "%s is abbreviated %s" % (x, y) 

什麼Python是尋找是(X,Y)組..哪裏x是字典(鍵)中的第一項,而y是字典(值)中的第二項。

該for循環所做的是越過(x,y)對,每一對被認爲是一個「項目」,就像一個向量states[1]中的單個項目。

0

states.items()返回一個鍵值對數據。 state和abbrev是for語句中的變量名稱。如果您願意,您可以將狀態和縮寫命名爲其他任何內容。

1

Python不知道或推斷變量名稱中的任何內容。它只知道你有一個任意字符串的字典,它恰好映射到其他任意字符串。

循環只是說「拉出字典中的鍵值對」並將鍵存儲在第一個變量中,並將值存儲在第二個變量中。

您可以按如下方式更改程序並查看它仍然有效。

# create a mapping of state to abbreviation 

monkeys = { 
    'Oregon': 'OR', 
    'Florida': 'FL', 
    'California': 'CA', 
    'New York': 'NY', 
    'Michigan': 'MI' 
} 

# print every state abbreviation 

print '-' * 25 
for cat, dog in monkeys.items(): 
    print "%s is abbreviated %s" % (cat, dog) 
0

states詞典有:

  • STATE_NAME(這是關鍵)#俄勒岡州,佛羅里達州,加利福尼亞州,紐約州,密歇根州
  • state_two_letter_code(這是價值)#OR,FL,CA,NY,MI

所以在這for循環:

  • 狀態,縮寫應該被理解爲STATE_NAMEstate_two_letter_code

而且每次循環時間:

  • 狀態縮寫會從字典中被指定爲每個項目

你可以把你想要的任何名稱的值。由於states.items()返回將被分配給變量名的(key, value)元組,你擺在那裏:

for key, value in states.items(): 
    print "State name: {}".format(key) 
    print "State Two Letter Code: {}".format(value) 

這是一個很好的例子:

def splitEmail(email): 
    return email.split('@') # this returns: ['someone', 'gmail.com'] 

# 'someone' is assigned to 'account' and 'gmail.com' is assigned to domain 
account, domain = splitEmail('[email protected]') 

print account 
print domain 

輸出:

someone 
gmail.com 
0

states.items()返回元組列表cont爲詞典中的條目賦予一個鍵和值。 for只是「解​​壓」每個元組的不同變量。 Python中的元組表示如下:(1, 2)

我所做的這個交互式ipython會話可能會幫助您理解邏輯。

In [2]: states.items() 
Out[2]: 
[('California', 'CA'), 
('Michigan', 'MI'), 
('New York', 'NY'), 
('Florida', 'FL'), 
('Oregon', 'OR')] 

In [3]: states.items()[0] 
Out[3]: ('California', 'CA') 

In [4]: a, b = states.items()[0]  
In [5]: print a, b 
California CA 

In [6]: for a, b in [(1, 1), (2, 2)]: 
    ...:  print a, b 
    ...:  
1 1 
2 2