2013-04-23 92 views
8

我想利用嵌套的字典(下同)訪問嵌套在Python

people = { 
     'Alice': { 
      'phone': '2341', 
      'addr': '87 Eastlake Court' 
      }, 

     'Beth': { 
      'phone': '9102', 
      'addr': '563 Hartford Drive' 
      }, 

     'Randy': { 
      'phone': '4563', 
      'addr': '93 SW 43rd' 
      } 

     } 

從上面的(簡單)的字典項格式化字符串字典項目,我想格式化字符串打印出來蘭迪的電話分機。

我能夠使用訪問所有的細節他:

print("Randy's phone # is %(Randy)s" % people) 

但我不知道如何去深入字典挑出剛剛從字典中的電話號碼。順便說一下,我使用的是Python 3.3。

回答

25

使用new string formatting

print("Randy's phone # is {0[Randy][phone]}".format(people)) 

print("Randy's phone # is {Randy[phone]}".format(**people)) 

 

有在經過整個字典如果你只使用一個值是沒有意義的。

print("Randy's phone # is {}".format(people['Randy']['phone'])) 

print("Randy's phone # is %s" % people['Randy']['phone']) 

也會起作用。

傳遞字典是有道理的,如果你有很多這些格式字符串,並不知道他們使用哪些值,並希望他們能夠訪問任何值。

或者如果您在格式字符串中使用許多值並單獨傳遞它們只是太冗長。

+0

這是最新的解決方案,海事組織,但''蘭迪的電話#是%s'%人['蘭迪'] ['電話']'邊際上更有效率。 – Aya 2013-04-23 15:55:20

+0

這就是它!謝謝,我不知道新的字符串格式。 Inbar提出了另一個有效的選擇: 'print(「Randy's phone#is%(phone)s」%people ['randy'])' 會比另一個更受歡迎,或者考慮更多'Pythonic'? – Keith 2013-04-23 15:57:37

+0

添加評論回答。 – 2013-04-23 16:06:10