2
>>> Employee = namedtuple("Employee", "name")
>>> Patient = namedtuple("Patient", "name")
>>> e = Employee("Mike")
>>> p = Patient("Mike")
>>> Counter([e, p])
Counter({Employee(name='Mike'): 2})

为什么 Counter 不区分这两类 namedtuple?

4

1 回答 1

4

顾名思义,命名元组就是元组。它们按元素进行比较。由于您的两个元组都具有"Mike"第一个(也是唯一一个)元素,因此它们是相等的。它们是不同的类并不重要。只比较内容。

如果您想比较考虑类本身,则必须编写自己的包装类。(一种简单的可能性是制作一个包含类名作为元组元素的包装器,因此employee-Mike 将成为("Employee", "Mike")而patient-Mike 将成为("Patient", "Mike")。)

于 2012-12-29T20:09:46.517 回答