小编use*_*949的帖子

使用不可变键但可变值定义python字典

好吧,问题在于标题:如何定义具有不可变键但可变值的python字典?我想出了这个(在python 2.x中):

class FixedDict(dict):
    """
    A dictionary with a fixed set of keys
    """

    def __init__(self, dictionary):
        dict.__init__(self)
        for key in dictionary.keys():
            dict.__setitem__(self, key, dictionary[key])

    def __setitem__(self, key, item):
        if key not in self:
            raise KeyError("The key '" +key+"' is not defined")
        dict.__setitem__(self, key, item)
Run Code Online (Sandbox Code Playgroud)

但它看起来(不出所料)相当草率.特别是,这是安全还是存在实际更改/添加某些密钥的风险,因为我是从dict继承的?谢谢.

python dictionary key immutability

10
推荐指数
2
解决办法
7347
查看次数

将文件句柄传递给cython函数

我想用cython编译一个python函数,用于读取跳过一些记录的二进制文件(不读取整个文件然后切片,因为我的内存不足).我可以想出这样的事情:

    def FromFileSkip(fid, count=1, skip=0):            
        if skip>=0:
            data = numpy.zeros(count)
            k = 0
            while k<count:
                try:
                    data[k] = numpy.fromfile(fid, count=1, dtype=dtype)
                    fid.seek(skip, 1)
                    k +=1
                except ValueError:
                    data = data[:k]
                    break
            return data
Run Code Online (Sandbox Code Playgroud)

然后我可以使用这样的功能:

 f = open(filename)
 data = FromFileSkip(f,...
Run Code Online (Sandbox Code Playgroud)

但是,为了用cython编译函数"FromFileSkip",我想定义函数中涉及的所有类型,所以"fid"也是文件处理程序.如何在cython中定义其类型,因为它不是"标准"类型,例如整数.谢谢.

python function filehandle cython

4
推荐指数
1
解决办法
3431
查看次数

标签 统计

python ×2

cython ×1

dictionary ×1

filehandle ×1

function ×1

immutability ×1

key ×1