回答編集履歴

1

テキスト追加

2021/12/14 09:46

投稿

退会済みユーザー
test CHANGED
@@ -85,3 +85,63 @@
85
85
 
86
86
 
87
87
  - **サンプル** ???? [replit.com/@kilesa/tera-373754](https://replit.com/@kilesa/tera-373754?v=1)
88
+
89
+
90
+
91
+
92
+
93
+ ### 追記
94
+
95
+
96
+
97
+ 上記の回答コードで、`result` の各キーである果物の名前に対するdictの中で、`key1`あるいは`key2`の値であるリストの長さが1であるもののみ、リストではなくリストの先頭要素の文字列に変換する処理が抜けていました。
98
+
99
+
100
+
101
+ 以下の一行を追加します。
102
+
103
+
104
+
105
+ ```diff
106
+
107
+ result = reduce(merge, [dic1, dic2, dic3, dic4], defaultdict(lambda: {'key1': [], 'key2': []}))
108
+
109
+
110
+
111
+ + result = {fruit: {k: v[0] if len(v) == 1 else v for k, v in dic.items()} for fruit, dic in result.items()}
112
+
113
+
114
+
115
+ # 結果の確認
116
+
117
+ for fruit, merged_k12_dic in result.items():
118
+
119
+ print(f'{fruit}:', merged_k12_dic)
120
+
121
+
122
+
123
+ ```
124
+
125
+
126
+
127
+ - **出力結果:**
128
+
129
+
130
+
131
+ > りんご: {'key1': ['フルーツ', '果実', 'くだもの'], 'key2': ['赤', '真っ赤', '赤い']}
132
+
133
+ バナナ: {'key1': ['くだもの', 'フルーツ', 'くだもの'], 'key2': ['黄色', '黄色い', 'Yellow']}
134
+
135
+ ぶどう: {'key1': ['果物', 'くだもの'], 'key2': ['紫', 'むらさき']}
136
+
137
+ メロン: {'key1': ['果実', 'くだもの'], 'key2': ['緑', 'みどり色']}
138
+
139
+ 梨: {'key1': 'くだもの', 'key2': '黄色'}
140
+
141
+ さくらんぼ: {'key1': 'くだもの', 'key2': '赤'}
142
+
143
+
144
+
145
+
146
+
147
+ - **サンプル** ???? [replit.com/@kilesa/tera-373754 #2](https://replit.com/@kilesa/tera-373754-2?v=1)