回答編集履歴

1

追記

2018/08/29 23:48

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -1 +1,47 @@
1
1
  dict.items()が返すジェネレータは`[(key1, value1), (key2, value2), ...]`という構造なので、その代入でキーと値に分けることはできない(正確にはシーケンスアンパックの数が合わない)というエラーです。
2
+
3
+
4
+
5
+ ---
6
+
7
+
8
+
9
+ やっぱりこういうのは再帰で書きたいな、ということで。
10
+
11
+
12
+
13
+ ```python
14
+
15
+ target = {"foo": {"bar": "baz", "hogehoge": {"foofoo": "bazbaz"}}, "hoge": "fuga"}
16
+
17
+ # mkgreiさん`target`をお借りしました。
18
+
19
+ print(target)
20
+
21
+
22
+
23
+ def dict_flatten(d, pref_key="", sep="_", result=None):
24
+
25
+ if result is None:
26
+
27
+ result = {}
28
+
29
+ for k,v in d.items():
30
+
31
+ if isinstance(v, dict):
32
+
33
+ dict_flatten(v, pref_key=pref_key+k+sep, sep=sep, result=result)
34
+
35
+ else:
36
+
37
+ result[pref_key+k] = v
38
+
39
+ return result
40
+
41
+
42
+
43
+ print(dict_flatten(target))
44
+
45
+
46
+
47
+ ```