# 最终想要这个类型的数据 {"key": ["a", "b"]}
mylist= {"key": [{'a': '1'}, {'b': '2'}]}
all = {}
for k, v in mylist.items():
    for j in v:
        all.setdefault(j, []).append(j.keys())
# TypeError: unhashable type: 'dict' 怎么设置字典的 value 默认类型是 list,且可以 append? 
|      1JacHammer      2020-08-24 22:15:34 +08:00 ```python mylist= {"key": [{'a': '1'}, {'b': '2'}]} all = {"key": []} for k, v in mylist.items(): for j in v: all['key'] += j.keys() ``` | 
|      3maddevil      2020-08-24 22:42:14 +08:00 ``` mylist = {"key": [{'a': '1'}, {'b': '2'}]} all = {} for k, v in mylist.items(): all[k] = [] for j in v: all[k] += j.keys() ``` | 
|  |      4Trim21      2020-08-24 22:47:01 +08:00 'dict' 怎么设置字典的 value 默认类型是 list,且可以 append?  from collections import defaultdict d = defaultdict(list) d[1].append(2) print(d[1]) | 
|      5maddevil      2020-08-24 22:51:48 +08:00 其实还可以一行搞定: {k: [j for i in v for j in i.keys()] for k, v in mylist.items()} | 
|  |      6GoLand      2020-08-24 22:53:43 +08:00 In [30]: example = {'key': [{'a': '1'}, {'b': '2', 'c': '3'}], 'key2': [{'c': 1}, {'d': 2}]} In [31]: res = {} In [32]: for k, v in example.items(): ...: res[k] = list(itertools.chain.from_iterable(map(lambda x: x.keys(), v))) ...: In [33]: res Out[33]: {'key': ['a', 'b', 'c'], 'key2': ['c', 'd']} | 
|  |      7h272377502      2020-08-25 11:19:20 +08:00 楼主什么操作,j 的 type 是 dict,dict 是 unhashable 的对象,你的目的明明是以 k 作为 value 。。。 最后一行改成这样吧 all.setdefault(k, []).append(list(j.keys())) | 
|  |      8css3 OP | 
|      9biglazycat      2020-09-06 21:27:57 +08:00 mylist= {"key": [{'a': '1'}, {'b': '2'}]} all = {} for k, v in mylist.items(): for j in v: all.setdefault(k, []).append(list(j.keys())[0]) print(all) |