2017-09-06 14 views
0

私はこれは頻繁にサンプルコードで参照してくださいだけでなく、このような入れ子構造の利点があるPython: "ネスト"辞書の目的は?

passwords = {"[email protected]": "secret"} 

を言う理由

# Our mock database. 
users = {'[email protected]': {'password': 'secret'}} 

は不思議?

は確かに欠点があります:私は設定し、各ユーザのために同じキー「パスワード」を名前に確認する必要があります...

+0

どこがこれを見ますか?私たちはあなたの文脈についてより多くの情報を必要とします。 – GLR

答えて

7

を:

users = {'[email protected]': 'secret,userName,15,pic.png...etc'} # you also need other users with properties 

は、その後、あなたが使用することを余儀なくされていますそのあなた辞書の各レベルでより多くのエントリを持っている必要があり、例えば

users = {'[email protected]': {'password': 'secret', 
         'name': 'john smith', 
         'creation_date': '2017/09/06'}, 
     '[email protected]': {'password': 'secret', 
         'name': 'someone else', 
         'creation_date': '2017/08/02'}} 

これは階層構造を表現するために、任意のネストされたアイテムを持つことができますJSONの構造に似ています。

2

は、あなたがより多くのユーザーを持っていることを想像して、すべてのユーザーがパスワードを持っています、など、ユーザー名、年齢、生年月日、写真、IDの日...、これは非常に非効率的になります:それはよくあるケースですので

users = { 
      '[email protected]': 
         {'password': 'secret', 
         'username': 'userName', 
         'age': 15, 
         'photo': 'pic.png'},#etc... 
      '[email protected]': { # same thing ... } 
     }