相关疑难解决方法(0)

在Python中超越工厂

从Java进入Python,我被告知工厂不是Pythonic.因此,我正在寻找一种 Python方法来执行以下操作.(我过分简化了我的目标,所以我不必描述我的整个程序,这非常复杂).

我的脚本将以人名(以及有关它们的一些信息)读取,并从中构建Person类型的对象.名称可能会重复,我只需要每个名称一个Person实例.这些人也可能属于男人和女人的子类.

一种方法是创建一个PersonFactory,它可以返回一个新实例化的Man或Woman,可以引用之前实例化的具有相同名称的Man/Woman.另一种方法是创建一组所有Person对象,并在实例化一个新对象之前每次检查是否存在具有给定名称的Person.然而,这两种方法都没有像Pythonic那样让我感到震惊.对于Python来说,第一个似乎有点过于繁琐(创建一个完整的类只是为了处理另一个对象的创建?真的吗?)而第二个会很快变得昂贵,因为我有很多名字需要处理.

python java

7
推荐指数
1
解决办法
1355
查看次数

有没有办法在O(1)时间内从集合中获取项目?

可能重复:
Python:从集合中检索项目

请考虑以下代码:

>>> item1 = (1,)
>>> item2 = (2,)
>>> s = set([item1, item2])
>>> s
set([(2,), (1,)])
>>> new_item = (1,)
>>> new_item in s
True
>>> new_item == item1
True
>>> new_item is item1
False
Run Code Online (Sandbox Code Playgroud)

所以new_items因为它是相当于它的项目之一,但它是一个不同的对象.

我想要的是item1s给定new_item的中得到s.

我提出的一个解决方案是直截了当但效率不高:

def get_item(s, new_item):
    for item in s:
        if item == new_item:
            return item

>>> get_item(s, new_item) is new_item
False
>>> get_item(s, new_item) is item1
True
Run Code Online (Sandbox Code Playgroud)

另一个解决方案似乎更有效但实际上不起作用: …

python lookup set

6
推荐指数
1
解决办法
680
查看次数

标签 统计

python ×2

java ×1

lookup ×1

set ×1