在闲置浏览命名空间的同时,我注意到一个名为" Ellipsis " 的奇怪物体,它似乎没有或做任何特殊的事情,但它是一个全局可用的内置.
在搜索之后,我发现它被Numpy和Scipy用于切片语法的一些模糊变体......但几乎没有别的.
这个对象是否专门用于支持Numpy + Scipy?省略号是否具有任何通用含义或用途?
D:\workspace\numpy>python
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> Ellipsis
Ellipsis
Run Code Online (Sandbox Code Playgroud) 我正在调试一些代码,我想知道何时访问特定的字典.好吧,它实际上是一个子类dict并实现了一些额外功能的类.无论如何,我想做的是dict自己子类化并添加覆盖__getitem__并__setitem__产生一些调试输出.现在,我有
class DictWatch(dict):
def __init__(self, *args):
dict.__init__(self, args)
def __getitem__(self, key):
val = dict.__getitem__(self, key)
log.info("GET %s['%s'] = %s" % str(dict.get(self, 'name_label')), str(key), str(val)))
return val
def __setitem__(self, key, val):
log.info("SET %s['%s'] = %s" % str(dict.get(self, 'name_label')), str(key), str(val)))
dict.__setitem__(self, key, val)
Run Code Online (Sandbox Code Playgroud)
' name_label'是一个最终将设置的键,我想用它来识别输出.然后我改变了我正在修改的类DictWatch而不是dict更改了对超级构造函数的调用.但是,似乎没有任何事情发生.我以为我很聪明,但我想知道我是否应该走另一个方向.
谢谢您的帮助!
假设我有一个这样的功能:
def do_something(dict_obj):
# access to the dict_obj then do some stuff
eg.
if dict_obj['doors']:
do_something_with_doors()
map_car_make(dict_obj['make'])
...
if dict_obj['is_active']:
do_something_else()
Run Code Online (Sandbox Code Playgroud)
我想模拟dict_obj拥有is_active元素而不关心其余的,我该怎么做?
编辑:这不是关于一般方法,而是关于Pytorch 数据集子类中__getitem__的用法,正如 @dataista 正确指出的那样。__getitem__
我正在尝试实现 Pytorchs 数据集类的使用。例如,这里的指南非常好,但我很难弄清楚 Pytorch 对 的返回值的要求__getitem__。在Pytorch 文档中我找不到任何关于它应该返回什么的信息;它是大小为 2 可迭代的任何对象吗[sample,target], (sample,target)?在某些指南中,他们返回一个字典,但他们没有指定它是否必须是返回的字典。
我正在做一个项目来了解有关使用 Python 的更多信息dataclasses。具体来说,我试图将 API 响应表示为一个dataclass对象。但是,由于 API 响应的结构,我遇到了一个问题。
以下是 API 的响应示例:
{
"@identifier": "example",
"@name": "John Doe",
}
Run Code Online (Sandbox Code Playgroud)
有些字段的名称中包含特殊字符。这意味着我无法直接映射 my 的属性dataclass,因为@属性名称中不允许使用特殊字符 ( SyntaxError)。
有没有办法为我的属性定义别名dataclass,以便我可以将 API 响应直接映射到dataclass对象?或者是否有必要先清理响应?
如果我有代码:
names = ["Dave", "John", "Bob"]
Run Code Online (Sandbox Code Playgroud)
我想从我会做的名字中得到戴夫:
names[0]
Run Code Online (Sandbox Code Playgroud)
如果我现在有代码
class Friends:
def __init__(self, *people):
self.names = []
for v in people:
self.names.append(v)
names = Friends("Dave", "John", "Bob")
Run Code Online (Sandbox Code Playgroud)
现在要得到戴夫,我必须这样做:
names.names[0]
Run Code Online (Sandbox Code Playgroud)
是否有一种神奇的方法或类似的方法,以便我可以这样做:
names[0]
Run Code Online (Sandbox Code Playgroud)
再次得到戴夫?