2016-10-17 24 views
-3

を使用して属性を訪れ、JSONオブジェクトやPythonオブジェクトに変換します。それはするのは簡単ですのようにPythonはPythonオブジェクトにJSONに変換し、タイトルのようにコンマ

u.name 

:私のように訪れたい

u = { 
    "name": "john", 
    "coat": { 
     "color": "red", 
     "sex": "man", 
    }, 
    "groups": [ 
     {"name": "git"}, 
     {"name": "flask"} 
    ] 
} 

辞書からの継承を行うが、

u.groups.0.name 

また

として設定しました
u.name = "flask" 
u.groups.0.name = "svn" 

PythonはJavaScriptのではない

+1

の可能性のある重複した[objectにPythonの辞書に変換?](http://stackoverflow.com/questions/1305532/convert-python好きです-dict-to-object) –

+4

'u.groups.0.name'は有効ではありません。有効なPython構文 –

+0

@FranciscoCouzo、より具体的には、有効なPython IDはnumberで始めることはできません。 – volcano

答えて

1

感謝。 u["groups"][0]["name"]を参照する必要があります。

0

整数がキーとして無効であるため、難しいかもしれません。

私はこの

class Dict(dict): 
 
    def __init__(self, value): 
 
     if isinstance(value, (list, tuple)): 
 
      value = dict(zip(['_%s' % i for i in range(len(value))], value)) 
 
      super(Dict, self).__init__(value) 
 

 
    def __getattr__(self, key): 
 
     try: 
 
      if type(self.__getitem__(key)) in (dict, OrderedDict, tuple, list): 
 
       return Dict(self.__getitem__(key)) 
 
      return self.__getitem__(key) 
 
     except KeyError: 
 
      raise AttributeError(key) 
 

 
    def __setattr__(self, key, value): 
 
     try: 
 
      return self.__setitem__(key, value) 
 
     except KeyError: 
 
      raise AttributeError(key)

u = { 
    "name": "john", 
    "coat": { 
     "color": "red", 
     "sex": "man", 
    }, 
    "groups": [ 
     {"name": "git"}, 
     {"name": "flask"} 
    ] 
} 

>>> u = Dict(u) 
>>> u.name 
output: john 
>>> u.groups._0 
output: {"name": "git"} 
関連する問題