2017-10-18 3 views
1

私はいくつかのvariable = valueスタイルの日付処理しています:私は解決しようとした`variable-vale`のペア日付をdictに統合するには?

{'data_struture': {'Map': 'dict', 
    'Sequence': ['list', 'tuple', 'bytearray'], 
    'Set': ['set', 'frozenset']}, 
'data_type': {'Literal': ['str', 'None', 'bytes'], 
    'Number': ['int', 'bool', 'float', 'complex']} 
    . 
    . 
    .} 

として、最終的な出力を持つ 、その間繰り返しタイピングのvaraiblesを避けるキーinoformationで辞書にそれらを統合する

data_type = {'Number': ['int','bool','float','complex'], 
      'Literal':['str','None','bytes']} 
data_struture = {'Sequence':['list', 'tuple','bytearray'], 
       'Set': ['set', 'frozenset'], 
       'Map':'dict'} 
. 
. 
. 

Atemptを次の手順で生データをクラスにカプセル化します。

最初にカプセル化する:

class FormalLanguage: 
    data_type = {'Number': ['int','bool','float','complex'], 
      'Literal':['str','None','bytes']} 
    data_struture = {'Sequence':['list', 'tuple','bytearray'], 
        'Set': ['set', 'frozenset'], 
        'Map':'dict'} 

セカンド資格

In [137]: { i:x[i] for i in x if not i.startswith('__')} 
Out[137]: 
{'data_struture': {'Map': 'dict', 
    'Sequence': ['list', 'tuple', 'bytearray'], 
    'Set': ['set', 'frozenset']}, 
'data_type': {'Literal': ['str', 'None', 'bytes'], 
    'Number': ['int', 'bool', 'float', 'complex']}} 

最後に結果を得るフィルタリングする第三

In [135]: x = dict(vars(FormalLanguage)) 
In [136]: x 
Out[136]: 
{'__dict__': <attribute '__dict__' of 'FormalLanguage' objects>, 
'__doc__': None, 
'__module__': '__main__', 
'__weakref__': <attribute '__weakref__' of 'FormalLanguage' objects>, 
'data_struture': {'Map': 'dict', 
    'Sequence': ['list', 'tuple', 'bytearray'], 
    'Set': ['set', 'frozenset']}, 
'data_type': {'Literal': ['str', 'None', 'bytes'], 
    'Number': ['int', 'bool', 'float', 'complex']}} 

クラスの属性を取得します。

それらを直接統合する方法はありますか?あなたが**kwargs経由でそれらを渡すことができ、

{'data_structure': {'Map': 'dict', 'Set': ['set', 'frozenset'], 'Sequence': ['list', 'tuple', 'bytearray']}, 'data_type': {'Literal': ['str', 'None', 'bytes'], 'Number': ['int', 'bool', 'float', 'complex']}} 

または::

final_dict = {"data_structure":data_struture, "data_type":data_type} 

を出力:

答えて

1

あなたはこれを試すことができます

def data(**kwargs): 
    final_data = kwargs 
    print(final_data) 

data(data_structure = data_struture, data_stype=data_type) 
+0

は、私はすべての '=' 'と交換し、突然のアイデアを得るエディタにコピーします。': - : - –

0

使用SimpleNamespace

from types import SimpleNamespace 
sn = SimpleNamespace(
data_type = {'Number': ['int','bool','float','complex'], 
      'Literal':['str','None','bytes']}, 
data_struture = {'Sequence':['list', 'tuple','bytearray'], 
       'Set': ['set', 'frozenset'], 
       'Map':'dict'} 

) これは、出力:

それが動作する
In [47]: sn 
Out[47]: namespace(data_struture={'Sequence': ['list', 'tuple', 'bytearray'], 'Set': ['set', 'frozenset'], 'Map': 'dict'}, data_type={'Number': ['int', 'bool', 'float', 'complex'], 'Literal': ['str', 'None', 'bytes']}) 
In [48]: vars(sn) 
Out[48]: 
{'data_struture': {'Map': 'dict', 
    'Sequence': ['list', 'tuple', 'bytearray'], 
    'Set': ['set', 'frozenset']}, 
'data_type': {'Literal': ['str', 'None', 'bytes'], 
    'Number': ['int', 'bool', 'float', 'complex']}} 
関連する問題