当前位置: 首页 > 面试题库 >

如何在python中唯一化字典列表

汪深
2023-03-14
问题内容

我有一个清单:

d = [{'x':1, 'y':2}, {'x':3, 'y':4}, {'x':1, 'y':2}]

{'x':1, 'y':2} 我不止一次要从列表中删除它。我的结果应该是:

 d = [{'x':1, 'y':2}, {'x':3, 'y':4} ]

注意: list(set(d))此处无法正常工作并引发错误。


问题答案:

如果您的值是可哈希的,那么它将起作用:

>>> [dict(y) for y in set(tuple(x.items()) for x in d)]
[{'y': 4, 'x': 3}, {'y': 2, 'x': 1}]

编辑:

我尝试了一下,没有重复,它似乎工作正常

>>> d = [{'x':1, 'y':2}, {'x':3, 'y':4}]
>>> [dict(y) for y in set(tuple(x.items()) for x in d)]
[{'y': 4, 'x': 3}, {'y': 2, 'x': 1}]

>>> d = [{'x':1,'y':2}]
>>> [dict(y) for y in set(tuple(x.items()) for x in d)]
[{'y': 2, 'x': 1}]


 类似资料:
  • 问题内容: 我有一个Python字典列表,如下所示: 我想实现的是保持,和独特的。 例如,如果我们有3项具有相同和,但有3个不同的值 ,,,则操作之后,它应该是和。 我该如何实现? ================================================== =============更新: 好的,感谢Anand的出色回答,它可以完美运行。但是,我还有一个问题。 假设我们有

  • 问题内容: 我正在尝试使Django函数进行JSON序列化并将其返回到对象中。 我正在这样使用它: 但是我得到这个错误: 有任何想法吗? 编辑:这是回溯: http://dpaste.com/38786/ 问题答案: 更新:Python现在拥有自己的json处理程序,只需使用即可代替。 Django序列化器模块旨在序列化Django ORM对象。如果要对常规Python字典进行编码,则应使用sim

  • 问题内容: 我想编写一个函数,该函数接收字典作为输入参数,并返回输入字典的反向函数,其中原始字典的值用作返回字典的键,而原始字典的键用作返回值。返回的字典,如下所述: 至 返回字典中的值列表应按升序排序。大小写无关紧要。这意味着所有单词都应转换为小写字母。例如,单词“准确”在原始词典中大写,但在返回的词典中,它用所有小写字母书写。 但是它返回此错误: 问题答案: 您可以像这样非常简单地进行操作:

  • 问题内容: 我了解这将合并词典。但是,它独特吗?如果d1与d2具有相同的密钥但值不同怎么办?我希望将d1和d2合并,但是如果有重复的键,则d1具有优先权。 问题答案: 如果您不再需要原始方法,则可以使用该方法: 使用其他键/值对更新字典, 覆盖现有键 。返回。 例如: 更新: 当然,您可以先复制该词典以创建一个新的合并词典。这可能是必需的,也可能不是。如果您的词典中有复合对象(包含其他对象的对象,

  • 问题内容: 我有2个列表,两个列表都包含相同数量的字典。每个字典都有一个唯一的键。第二个列表中的第一个列表的每个字典都有一个匹配项,也就是说另一个列表中存在一个具有唯一键的字典。但是,这两个词典的其他元素可能会有所不同。例如: 我想比较2个匹配字典的所有元素。如果任何元素不相等,我要打印不相等的元素。 你能帮忙吗? 问题答案: 假设字典像您的示例输入中那样排列,您可以使用该函数获取相关的成对字典的

  • 问题内容: 如何将Python字典序列化为字符串,然后再返回字典?该词典中将包含列表和其他词典。 问题答案: 这取决于您要使用它的目的。如果只是尝试保存它,则应使用(或者,如果使用CPython 2.x,则速度更快)。 如果您希望它可读,可以使用: 但是,它支持的功能非常有限,虽然可以用于任意对象(如果它不能自动运行,则该类可以定义以精确指定应如何对其进行腌制)。