Python 获取两个列表的差异,其中包含dict

Python 获取两个列表的差异,其中包含dict,python,python-3.x,Python,Python 3.x,我试图使用difference(),但我总是得到TypeError:unhabable类型:“dict”。 这是我的密码: a=set(数据) b=设置(y) z=a.差值(y) 打印(z) “data”和“y”如下所示: y = [ { "name": "text1", "size": "144", "type": "f" }, { "name": "folder", "size": "8

我试图使用
difference()
,但我总是得到
TypeError:unhabable类型:“dict”
。 这是我的密码:

a=set(数据)
b=设置(y)
z=a.差值(y)
打印(z)
“data”和“y”如下所示:

y = [
    {
        "name": "text1",
        "size": "144",
        "type": "f"
    },
    {
        "name": "folder",
        "size": "832",
        "sub": [
            {
                "name": "text2",
                "size": "522",
                "type": "f"
            }
        ],
        "type": "c"
    }
]

输出应返回差异(名称、大小以及是否存在差异)。

从您的描述中仍然不清楚您试图实现的目标

但是我假设您想找出
数据
y
之间的区别,但我不确定您为什么要在这里使用
设置
。您的
TypeError
实际上发生在第一行,因为此目录列表无法添加到集合中。不过,这样做也行,只需在这里列出:

>a=[
{
“名称”:“text1”,
“大小”:“144”,
“类型”:“f”
},
{
“名称”:“文件夹”,
“大小”:“832”,
“sub”:[
{
“名称”:“text2”,
“大小”:“522”,
“类型”:“f”
}
],
“类型”:“c”
}
]
>>>b=[
{
“名称”:“text1”,
“大小”:“144”,
“类型”:“f”
},
{
“名称”:“text2”,
“大小”:“288”,
“类型”:“f”
},
]
>>>[如果项目不在a中,则b中项目的项目]
>>> [
{
“名称”:“text2”,
“大小”:“288”,
“类型”:“f”
}
]

旧答案:

通常,在Python中计算集之间的差异如下:

y = [
    {
        "name": "text1",
        "size": "144",
        "type": "f"
    },
    {
        "name": "folder",
        "size": "832",
        "sub": [
            {
                "name": "text2",
                "size": "522",
                "type": "f"
            }
        ],
        "type": "c"
    }
]
>a=set()
>>>b=集合()
>>>a.加入(1)
>>>a.加入(2)
>>>b.add(1)
>>>b.添加(3)
>>>a-b
>>> {2}
>>>b-a
>>> {3}
>>>a.差异(b)
>>> {2}
>>>b.差异(a)
>>> {3}

欢迎来到stackoverflow。感觉好像丢失了一些信息,或者其中可能有一些错误。例如,我不明白
数据是什么,为什么你说“a”和“b”看起来像“y”。请退房