8

ネストされた辞書の項目を使用して文字列をフォーマットしようとしています (以下)。

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

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

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

        }

上記の (単純な) 辞書から、文字列をフォーマットして、Randy の内線番号を出力したいと考えています。

以下を使用して、彼のすべての詳細にアクセスできます。

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

しかし、辞書をさらに深く調べて、辞書から電話番号だけを抽出する方法がわかりません。

ちなみに、私はPython 3.3を使用しています。

4

1 に答える 1

26

新しい文字列フォーマットを使用します:

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

また

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

 

使用する値が 1 つだけの場合、辞書全体を渡しても意味がありません。

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

また

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

も機能します。

これらのフォーマット文字列が多数あり、それらが使用する値がわからず、任意の値にアクセスできるようにしたい場合は、辞書を渡すことは理にかなっています。

または、フォーマット文字列で多くの値を使用し、それらを個別に渡すのは冗長すぎる場合。

于 2013-04-23T15:51:57.757 に答える