我有一个字典列表,其中特定值重复多次,我想删除重复的值。
我的清单:
te = [
{
"Name": "Bala",
"phone": "None"
},
{
"Name": "Bala",
"phone": "None"
},
{
"Name": "Bala",
"phone": "None"
},
{
"Name": "Bala",
"phone": "None"
}
]
删除重复值的功能:
def removeduplicate(it):
seen = set()
for x in it:
if x not in seen:
yield x
seen.add(x)
当我调用此函数时,我得到了generator object
。
<generator object removeduplicate at 0x0170B6E8>
当我尝试遍历生成器时,我得到 TypeError: unhashable type: 'dict'
有没有办法删除重复的值或遍历生成器
您可以通过字典理解轻松地删除重复键,因为字典不允许重复键,如下所示-
te = [
{
"Name": "Bala",
"phone": "None"
},
{
"Name": "Bala",
"phone": "None"
},
{
"Name": "Bala",
"phone": "None"
},
{
"Name": "Bala",
"phone": "None"
},
{
"Name": "Bala1",
"phone": "None"
}
]
unique = { each['Name'] : each for each in te }.values()
print unique
输出-
[{'phone': 'None', 'Name': 'Bala1'}, {'phone': 'None', 'Name': 'Bala'}]
问题内容: 我在Python中有一个列表列表: 我想从中删除重复的元素。如果这是正常列表,而不是我可以使用的列表set。但不幸的是,该列表不可散列,因此无法建立一组列表。只有元组。因此,我可以将所有列表转换为元组,然后使用set并返回列表。但这不是很快。 如何以最有效的方式做到这一点? 上面的结果应为: 我不在乎保留订单。 注意:这个问题很相似,但不是我所需要的。搜索了SO,但没有找到确切的重复项
问题内容: 如果想基于每个嵌套列表的第一个元素评估重复项,谁能提出一个好的解决方案从嵌套列表中删除重复项? 主列表如下所示: 如果已经在第一位置出现了另一个具有相同元素的列表,那么我想删除该列表并得到以下结果: 您可以建议一种算法来实现此目标吗? 问题答案: 您是否关心保留订单/删除了哪些重复项?如果不是,则: 会做的。如果您想保留订单并想保留第一个订单,则:
问题内容: 我有一个对象列表,并且有一个充满记录的数据库表。我的对象列表具有标题属性,我想从列表中删除所有具有重复标题的对象(保留原始对象)。 然后,我要检查我的对象列表是否在数据库中有任何记录的重复项,如果是,请在将它们添加到数据库之前从列表中删除这些项目。 我已经看到了从这样的列表中删除重复项的解决方案:,但是我不确定如何使用对象列表来做到这一点? 我也需要维护对象列表的顺序。我也在想,也许我
问题内容: 我有一个看起来像这样的数组: 而且我需要删除重复项,以便保留类似以下内容: 我尝试安装underscore.js并使用._uniq,但这似乎仅在对象中出现一对时才起作用。我似乎无法使它跨多个键工作。 当我尝试类似的东西: 我只得到前三个唯一值(每个年级一个)。但是我需要所有年级和领域的唯一值。是否有一种简单的方法将两个键都馈给_.uniq函数? 最终,我需要一个列表,其中每个唯一的等级
问题内容: 我正在尝试从具有相同的第一项和第三项但仅保留第一项的列表中删除列表。示例列表和输出: 由于原始列表包含数百万个列表,因此我编写的代码需要很长时间才能执行。 如何改善代码?提前致谢。 问题答案: 改进的版本: 更改为: 使用的,这使得查找更快。 转成元组,因为没有必要存储唯一的第一和第三元素列表。 减少的函数查找也可以加快代码的速度。
问题内容: 我想从列表列表中删除所有重复列表。 所以我有一个这样的清单清单。 我希望有: 我不知道该怎么办。 谢谢 问题答案: 您可以使用一组: 或者,如果您更喜欢列表推导/生成器: 最后,如果顺序很重要,则可以始终对b进行排序: