Python: 创建一个字典,其中键和值也是另一个字典中的字典

Python: Create a dictionary where both key and values are also dictionaries out of another dictionary

假设我有一个字典列表,如下所示:

list_1 =[{'A':1, 'B':2, 'C':3, 'D':4 , 'E':5},{'A':6 'B':7, 'C':8, 'D':9 , 'E':10}]

我想要的输出是第二个字典列表,其中只有一对 key:value,两个字典都是

list_2 = [{{'A':1, 'B':2, 'C':3, 'D':4} : {'E':5}}, {{'A':6 'B':7, 'C':8, 'D':9} : {'E':10}}]

我想出了如何创建字典的两个分隔列表,但我似乎找不到下一步。

list_of_keys = [{key : d[key] for key in set(['A', 'B', 'C', 'D'])} for d in l1]

list_of_values = [{key : d[key] for key in set(['E'])} for d in l1]

提前致谢

您不能将字典用作另一个字典的键,因为字典键必须是不可变的类型。例如,您可以使用整数、浮点数、字符串或布尔值作为字典键。但是,列表和另一个字典都不能用作字典键,因为列表和字典是可变的。 我建议您查看此线程以获得不同的解决方案: here

您不能在 python 中的字典中使用字典作为关键字。

考虑改用 namedtuple:

>>> from collections import namedtuple
>>> l1 =[{'A':1, 'B':2, 'C':3, 'D':4, 'E':5}, {'A':6, 'B':7, 'C':8, 'D':9, 'E':10}]
>>> keys = list('ABCD')
>>> Dict = namedtuple('Dict', keys)
>>> [{Dict(*(d.pop(k) for k in keys)): d for d in (d.copy() for d in l1)}]
[{Dict(A=1, B=2, C=3, D=4): {'E': 5}, Dict(A=6, B=7, C=8, D=9): {'E': 10}}]