无法散列的类型:“ dict”

时间:2019-03-14 04:30:26

标签: python raspberry-pi

我是这里的新手,我想问一些有关删除重复数据输入的问题,现在我仍在做关于人脸识别的项目,并停留在删除重复数据输入中,然后发送给Google表格,这是我使用:

if(confidence <100):
    id = names[id]
    confidence = "{0}%".format (round(100-confidence))
    row = (id,datetime.datetime,now().strftime('%Y-%m-%d %H:%M:%S'))
    index = 2
    sheet.insert_row (row,index)
    data = sheet.get_all_records()
    result = list(set(data))
    print (result)

消息错误“无法散列的类型:'dict” 我只想输入一次就将结果发布到Google工作表中

2 个答案:

答案 0 :(得分:2)

您无法将字典添加到集合中。

您可以 做的是将字典项添加到集合中。您可以像这样将其转换为元组列表:

s = set(tuple(data.items()))

如果之后需要将其转换回字典,则可以执行以下操作:

for t in s:
    new_dict = dict(t)

答案 1 :(得分:0)

根据gspread get_all_records()的文档,返回 dict list ,其中dict的头行为键,值为单元格值。因此,您需要遍历此列表,比较您的id,以查找和删除重复项。示例代码:

visited = []
filtered = []
for row in data:
    if row['id'] not in visited:
        visited.append(row['id'])
    else:
        filtered.append(row)

现在,已过滤的项应包含唯一项。但是,您应该放置包含重复值的列的名称,而不是id