Python 将具有字典的字典转换为具有相同键值对的列表

Python 将具有字典的字典转换为具有相同键值对的列表,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有一本字典,里面有很多字典 比如说 Dict_a = {'Dict1': {'name': 'Ali', 'age': 19}, 'Dict2': {'name': 'Bob', 'age': 21}, 'Dict2': {'name': 'Ali', 'age': 21}} 现在我想把这些字典转换成这样的字典,它们有一个共同的键值 Dict_b = {"distinct": [], "match": [[{'name': 'Ali', 'age': 19

我有一本字典,里面有很多字典

比如说

Dict_a = {'Dict1': {'name': 'Ali', 'age': 19},

        'Dict2': {'name': 'Bob', 'age': 21},

        'Dict2': {'name': 'Ali', 'age': 21}}
现在我想把这些字典转换成这样的字典,它们有一个共同的键值

Dict_b = {"distinct": [], "match": [[{'name': 'Ali', 'age': 19},

        {'name': 'Ali', 'age': 21}],

        [{'name': 'Bob', 'age': 21}]] }
有什么有效的方法吗?

试试这个:

payload = {}

for dict_name, value in Dict_a.items():
    if value["name"] in payload.keys():
        payload[value["name"]].append(value)
    else:
        payload[value["name"]] = [value]

Dict_b = {"distinct": [], "match": payload.values()}

Dict_a
不可能。你不能有两个相同的键。如果你仔细看,这两个键都有3个字典。我已经在python中执行了这个命令,它的工作原理是你应该把问题分解成更小的任务,然后问我们如何执行那些你不知道如何执行的任务。比较两个字典的键以检查它们是否相同?使用
dict_1.keys()==dict_2.keys()
。是否创建具有相同键的所有词典的列表<代码>[x代表x,如果x.键()=所需键]。对每个条目执行该操作,不重复?首先创建一个大dict,只需使用一个
for
循环,这里没有足够的空间来写入。错误。您的
Dict\u a
只有两项。第三项被覆盖,因为它有一个重复的键。@DYZ我认为可以合理地推断这些键是任意的,第三项应该读
Dict3
。这对吗,努普尔?