質問編集履歴

1 誤字を直しました

kingsma20576829

kingsma20576829 score 3

2018/08/29 19:16  投稿

階層の深い辞書を1段に変換する問題
Pythonの問題について、自分で答えを使ってみたのですが、エラーになってします。
Pythonの問題について、自分で答えを考えてみたのですが、エラーになってします。
どこを直せばよいか教えて下さい。
【問題】
辞書の中の辞書の中の辞書、のように階層の深い辞書 target を1段の辞書に変換する関数を書きましょう。
separator 文字列を使って、各階層のキーを繋げます。
入力例:
target: {"foo": {"bar": "baz"}, "hoge": "fuga"}
separator: "_"
出力
{"foo_bar": "baz", "hoge": "fuga"}
【自分の解答】
```Python
def dict_flatten(target, separator):
   new_dic = {}
   for key, value in target.items():
       print(key, value)
       while not type(value) == str:
           key1, value = value.items()
           key = key + separator + key1
       new_dic[key] = value
```
6行目にnot enough values to unpack (expected 2, got 1)とエラーが出ます。
items()関数でvalueを更新していき、文字列になったら終了するという方針です。
itmes()関数を使う2回目以降は、valueは辞書型でないのでしょうか?
  • Python

    12897 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る