好吧,问题在于标题:如何定义具有不可变键但可变值的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继承的?谢谢.
我想用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中定义其类型,因为它不是"标准"类型,例如整数.谢谢.