相关疑难解决方法(0)

为什么在python 2.x中int(50)<str(5)?

在python 3中,int(50)<'2'导致a TypeError,以及它应该.但是,在python 2.x中,int(50)<'2'返回True(对于其他数字格式也是如此,但int在py2和py3中都存在).那么,我的问题有几个部分:

  1. 为什么Python 2.x(<3?)允许这种行为?
    • (谁认为允许这个开头是个好主意?)
  2. 一个int小于一个是什么意思str
    • 是指ord/ chr
    • 是否有一些二进制格式不太明显?
  3. 这方面'5'u'5'这方面有区别吗?

python string int comparison python-2.x

6
推荐指数
2
解决办法
671
查看次数

如果没有实现__lt__协议,比较如何工作?

我最感兴趣的是发生了什么,但是假设我有一个自定义类,实现了__eq__而没有别的.

其他比较如何解决?什么是默认行为?每次运行比较时,我都会得到不同的结果.我知道我需要实现这些,我也可以用它@total_ordering来简化工作.

幕后实际发生了什么?这主要是出于好奇.

python comparison python-2.7

2
推荐指数
1
解决办法
123
查看次数

使用 queue.PriorityQueue,不关心比较

我正在尝试queue.PriorityQueue在 Python 3(.6) 中使用。

我想存储具有给定优先级的对象。但是如果两个对象具有相同的优先级,我也不介意PriorityQueue.get返回。换句话说,我的对象不能以整数进行比较,允许它们是没有意义的,我只关心优先级。

Python 3.7 的文档中,有一个涉及dataclasses. 我引用:

如果数据元素不可比较,可以将数据包装在一个忽略数据项而只比较优先级数字的类中:

from dataclasses import dataclass, field
from typing import Any

@dataclass(order=True)
class PrioritizedItem:
    priority: int
    item: Any=field(compare=False)
Run Code Online (Sandbox Code Playgroud)

唉,我使用的是 Python 3.6。在这个版本的 Python 的文档中,没有关于使用PriorityQueue优先级的评论,也不关心在我的情况下不合逻辑的“对象值”。

有没有比__le__在我的自定义类上定义和其他比较方法更好的方法?我发现这个解决方案特别丑陋和违反直觉,但这可能是我。

python priority-queue python-dataclasses

2
推荐指数
1
解决办法
2692
查看次数