如何最有效地检查列表中的唯一元素?

TIM*_*MEX 5 python performance dictionary list

假设我有一个清单

li = [{'q':'apple','code':'2B'},
      {'q':'orange','code':'2A'},
      {'q':'plum','code':'2A'}]
Run Code Online (Sandbox Code Playgroud)

返回此列表中唯一"代码"计数的最有效方法是什么?在这种情况下,唯一代码是2,因为只有2B2A是唯一的.

我可以将所有内容放在列表中进行比较,但这真的很有效吗?

Eli*_*ght 8

可能最有效的简单方法是创建一组代码,这些代码将过滤掉唯一身份,然后获取该集合中的元素数量:

count = len(set(d["code"] for d in li))
Run Code Online (Sandbox Code Playgroud)

一如既往,我建议不要担心这种效率,除非你已经衡量了你的表现,并发现这是一个问题.在编写这种代码时,我通常只考虑代码清晰度,然后只有在我进行了分析并发现我需要进行性能改进之后再回过头来收紧它.

  • 要获取某些*group*的唯一性,它总是O(n),因为除非你有其他内部信息,否则你要查看每个元素. (2认同)