相关疑难解决方法(0)

当我需要自我引用词典时,我该怎么办?

我是Python的新手,有点惊讶我无法做到这一点.

dictionary = {
    'a' : '123',
    'b' : dictionary['a'] + '456'
}
Run Code Online (Sandbox Code Playgroud)

我想知道Pythonic在我的脚本中正确执行此操作的方法是什么,因为我觉得我不是唯一一个试图这样做的人.

编辑:足够的人想知道我在做什么,所以这里有更多我的用例的细节.让我们说我想保持字典对象来保存文件系统路径.路径相对于字典中的其他值.例如,这就是我的一本词典.

dictionary = {
    'user': 'sholsapp',
    'home': '/home/' + dictionary['user']
}
Run Code Online (Sandbox Code Playgroud)

重要的是,在任何时候我都可以改变dictionary['user']并让所有词典值反映出变化.再一次,这是我正在使用它的一个例子,所以我希望它能传达我的目标.

根据我自己的研究,我认为我需要实现一个类来完成这项工作.

python dictionary

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

在自己内部引用字典

是否可以从同一个字典中的字典条目中获取值?我想建立一个目录列表,同时引用以前添加的目录..

common_dirs = {
    'root': '/var/tmp',
    'java_path': os.path.join(dict.get('root'), 'java'),
    'application_path': os.path.join(dict.get('java_path'), 'my_app')
}
Run Code Online (Sandbox Code Playgroud)

python dictionary

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

python中的自引用类?

在Python中,您是否可以拥有成员的类,这些成员本身就是指向同一类类型成员的指针?例如,在C中,您可能在二叉树中具有以下类的节点:

struct node {
    int data;
    struct node* left;
    struct node* right;
} 
Run Code Online (Sandbox Code Playgroud)

你会如何在python中等效地创建它?

python class

3
推荐指数
4
解决办法
3957
查看次数

在Python中进行list/dict理解时是否可以访问当前对象?

试图想出一个单行程来实现以下(总结一个键的所有值):

>>> data = [('a',1),('b',3),('a',4),('c',9),('b',1),('d',3)]
>>> res = {}
>>> for tup in data:
...     res[tup[0]] = res.setdefault(tup[0],0) + tup[1]
... 
>>> res
{'a': 5, 'c': 9, 'b': 4, 'd': 3}
Run Code Online (Sandbox Code Playgroud)

单行版本,不使用任何导入,如itertools,集合等.

 { tup[0] : SELF_REFERENCE.setdefault(tup[0],0) + tup[1]  for tup in data }
Run Code Online (Sandbox Code Playgroud)

在Python中是否可以使用对当前正在理解的对象的引用?如果没有,有没有办法在单行中实现这一点而不使用任何导入,即使用基本列表/字典理解和内置函数.

python list-comprehension dictionary-comprehension

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

有没有办法在python中引用当前函数?

我想要一个函数来引用它自己.例如,是递归的.

所以我做了类似的事情:

def fib(n):
    return n if n <= 1 else fib(n-1)+fib(n-2)
Run Code Online (Sandbox Code Playgroud)

这在大多数时候都很好,但fib实际上并不是指自己; 它指的是fib封闭块中的绑定.因此,如果由于某种原因fib被重新分配,它将会破坏:

>>> foo = fib
>>> fib = foo(10)
>>> x = foo(8)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in fib
TypeError: 'int' object is not callable
Run Code Online (Sandbox Code Playgroud)

fib如果可能的话,我怎样才能防止这种情况发生(从内部)?据我所知,在fib完全执行函数定义之前,名称不存在; 有没有解决方法?

我没有真正可能发生的实际用例; 我只是出于纯粹的好奇心.

python

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