2017-10-25 6 views
0

私はこの形式の辞書を持っています。辞書の値を平らにするpython

{'column1': {'id': 'object'}, 
'column2': {'mark': 'int64'}, 
'column3': {'name': 'object'}, 
'column4': {'distance': 'float64'}} 

私は、これは形式に変換したい:別の平坦化された辞書にdictonaryの

{'id': 'object', 
'mark': 'int64', 
'name': 'object', 
'distance': 'float64'} 

すなわち値を。

私が使用してみました:

L= [] 
for i in d.values(): 
    L.append(str(i)) 
dict(L) 

しかし、その作業はありません。このような

+0

の可能性のある重複した[Pythonの:?辞書からの値のリストを取得する最も簡単な方法](https://stackoverflow.com/questions/16228248/ python-simplest-way-to-get-from-dict) –

答えて

8

使用のdict-理解は:あなたが最終的な結果としての辞書を探していますが、リストに追加しているので

>>> my_dict = {'column1': {'id': 'object'}, 
'column2': {'mark': 'int64'}, 
'column3': {'name': 'object'}, 
'column4': {'distance': 'float64'}} 
>>> result = {k:v for d in my_dict.values() for k,v in d.items()} 
>>> result 
{'distance': 'float64', 'mark': 'int64', 'id': 'object', 'name': 'object'} 
+0

正確にこのように! – Shubham

1

あなたの現在のソリューションが動作しない理由を理解したいならば、それはです。ループ内でdict.updateと呼んでください。

result = {} 
for i in data.values(): 
    result.update(i) 

print(result) 
{'name': 'object', 'mark': 'int64', 'id': 'object', 'distance': 'float64'} 
0

これは、最も簡単な解決策かもしれません:

columns = {'column1': {'id': 'object'}, 
'column2': {'mark': 'int64'}, 
'column3': {'name': 'object'}, 
'column4': {'distance': 'float64'}} 

newColumns = {} 
for key, value in columns.items(): 
    for newKey, newValue in value.items(): 
    newColumns[newKey] = newValue 

print(newColumns) 
+2

私は反対する傾向があります。私は、 'update'がはるかに簡潔で、先行する答えによって示されたdict compが続くと思います。 –

+0

合意。更新はより効率的です。 –

関連する問題