1

Python でネストされた順序付き辞書を反復処理しようとしています。私はこのようなことができることを知っています:

food = OrderedDict([('Fruits', OrderedDict([('Apple', 50), ('Banana', 100), ('Pear', 200)])), 
                    ('Vegetables', OrderedDict([('Carrot', 10), ('Broccoli', 5), ('Corn', 40)]))])
for value in food.itervalues():
    for key in value.iterkeys():
        print key

ネストされた for ループを使用してキー (または値) を取得します。しかし、どうすればこれを1行で行うことができますか? 文字列キー (果物の名前など) のみを pandas データフレームに保存しようとしています (数字は使用されません)。これが私の試みでした:

food_df = pd.DataFrame({'Food': key for key in value.iterkeys() for value in food.itervalues()})

エラーが発生します:

File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 397, in __init__
    mgr = self._init_dict(data, index, columns, dtype=dtype)
File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 528, in _init_dict
    dtype=dtype)
File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 5670, in _arrays_to_mgr
    index = extract_index(arrays)
File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 5708, in extract_index
    raise ValueError('If using all scalar values, you must must pass'
    ValueError: If using all scalar values, you must must pass an index

何か案は?ありがとう!

4

1 に答える 1