相关疑难解决方法(0)

在python中使用重复键创建字典

我有以下列表,其中包含具有不同值的重复汽车注册号.我想把它转换成一个字典,接受汽车注册号的多个键.到目前为止,当我尝试将列表转换为字典时,它消除了其中一个键.有人可以告诉我如何使用重复键创建字典列表是:

EDF768, Bill Meyer, 2456, Vet_Parking
TY5678, Jane Miller, 8987, AgHort_Parking
GEF123, Jill Black, 3456, Creche_Parking
ABC234, Fred Greenside, 2345, AgHort_Parking
GH7682, Clara Hill, 7689, AgHort_Parking
JU9807, Jacky Blair, 7867, Vet_Parking
KLOI98, Martha Miller, 4563, Vet_Parking
ADF645, Cloe Freckle, 6789, Vet_Parking
DF7800, Jacko Frizzle, 4532, Creche_Parking
WER546, Olga Grey, 9898, Creche_Parking
HUY768, Wilbur Matty, 8912, Creche_Parking
EDF768, Jenny Meyer, 9987, Vet_Parking
TY5678, Jo King, 8987, AgHort_Parking
JU9807, Mike Green, 3212, Vet_Parking
Run Code Online (Sandbox Code Playgroud)

我试过的代码是:

data_dict = {}
data_list = []

def createDictionaryModified(filename): …
Run Code Online (Sandbox Code Playgroud)

python dictionary

44
推荐指数
6
解决办法
14万
查看次数

为什么 Python NewType 与 isinstance 和 type 不兼容?

这似乎不起作用:

from typing import NewType

MyStr = NewType("MyStr", str)
x = MyStr("Hello World")

isinstance(x, MyStr)
Run Code Online (Sandbox Code Playgroud)

我什至不明白False,但TypeError: isinstance() arg 2 must be a type or tuple of types因为MyStr是一个函数并且isinstance需要一个或多个type

甚至assert type(x) == MyStr失败is MyStr

我究竟做错了什么?

python-typing

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

限制可能值的 Python 类型提示友好类型

我想要一种 python 类型提示友好的方式来创建一个具有约束值范围的类型。

例如,基于类型的URL类型str只接受看起来像“http”URL 的字符串。

# this code is made up and will not compile
class URL(typing.NewType('_URL', str)):
    def __init__(self, value: str, *args, **kwargs):
        if not (value.startswith('http://') or value.startswith('https://')):
            raise ValueError('string is not an acceptable URL')
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-typing

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

在继承自int或float或str的类中设置参数的值

当我尝试设置继承自的类的参数的值时,会引发错误str.只有当我尝试访问参数时才会发生错误myClass(arg = 'test').错误是:

TypeError: 'arg' is an invalid keyword argument for this function
Run Code Online (Sandbox Code Playgroud)

问题显示在此示例中:

class A(str):    
    def __init__(self, arg):
        pass

A("test") # Works well
A(arg = "test") # Fails
Run Code Online (Sandbox Code Playgroud)

只有最后一行才会引发错误.前一行效果很好.问题与从int或继承的类相同float.

更新(解决方案):

我找到了这些链接的解决方案:

解决方案是:

class A(str):

    def __new__(cls, *args, **kwargs):
        return str.__new__(cls)

    def __init__(self, arg01):
        print(arg01)

A(arg01= "test")
Run Code Online (Sandbox Code Playgroud)

我不确切知道为什么会有效,我会对此进行调查.如果有人有明确的解释,我很感兴趣,我提前感谢他.

更新(我的解释):

我不确定我会说什么,但这就是我所理解的.

想象一下'myClass'没有任何遗产的课程.当我这样做时myInstance = myClass(),会发生以下情况:

该方法myClass.__new__被执行.此方法将创建对象myInstance.__new__是真正的构造函数(__init__不是构造函数!).在伪代码中,__new__看起来像这样:

def __new__ …
Run Code Online (Sandbox Code Playgroud)

python inheritance class python-internals

5
推荐指数
1
解决办法
198
查看次数

对int进行子类化并重写__init__方法 - Python

可能重复:
从str或int继承

嗨伙计,

我试图继承int类没有任何成功.这是我的尝试:

class SpecialInt(int):
    def __init__(self, x, base=10, important_text=''):
        int.__init__(self, x, base)
        self.important_text=important_text
Run Code Online (Sandbox Code Playgroud)

如果我执行以下操作:

integer = SpecialInt(123, 10, 'rage of the unicorns')
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

TypeRror: int() takes at most 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?:)

python int built-in subclassing

3
推荐指数
1
解决办法
3132
查看次数

继承自不可变类型

我想知道的继承是如何工作的int,list,string和其他稳定的类型.

基本上我只是继承了这样一个类:

class MyInt(int):
    def __init__(self, value):
        ?!?!?
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄明白,我如何设置它的设置值int?如果我这样做,self.value = value那么我的课将被这样使用:

mi = MyInt(5)
print(mi.value) # prints 5
Run Code Online (Sandbox Code Playgroud)

而我想像这样使用它:

mi = MyInt(5)
print(mi) # prints 5
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

python string int inheritance list

3
推荐指数
1
解决办法
490
查看次数

Python如何扩展`str`并重载其构造函数?

我有一个字符序列,如果你愿意,我会有一个字符串,但我想存储有关字符串原点的元数据.另外,我想提供一个简化的构造函数.

我尝试过str像Google为我解决的那样多的方式扩展课程.我来的时候就放弃了;

class WcStr(str):
    """wc value and string flags"""

    FLAG_NIBBLES = 8 # Four Bytes

    def __init__(self, value, flags):
        super(WcStr, self).__init__()
        self.value = value
        self.flags = flags

    @classmethod
    def new_nibbles(cls, nibbles, flag_nibbles=None):
        if flag_nibbles is None:
            flag_nibbles = cls.FLAG_NIBBLES

        return cls(
            nibbles[flag_nibbles+1:],
            nibbles[:flag_nibbles]
        )
Run Code Online (Sandbox Code Playgroud)

当我将两个参数注释掉为@classmethod's cls()时,它会给我这个错误:

TypeError: __init__() takes exactly 3 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

非常典型,错误的args错误数,

使用另外两个参数(例如,如示例代码所示):

TypeError: str() takes at most 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)

我试过改变它__init__的args,它super().__init__的args,似乎都没有改变.

只有一个参数传递给cls(...)调用,正如str类的错误所要求的那样,我得到了这个:

TypeError: __init__() takes …
Run Code Online (Sandbox Code Playgroud)

python string overloading class python-2.7

3
推荐指数
1
解决办法
5163
查看次数