相关疑难解决方法(0)

Python中的最大递归深度是多少,以及如何增加它?

我在这里有这个尾递归函数:

def recursiveFunction(n, sum):
    if n < 1:
        return sum
    else:
        return recursiveFunction(n-1, sum+n)

c = 998
print(recursiveFunction(c, 0))
Run Code Online (Sandbox Code Playgroud)

它可以工作到n = 997,然后它就会中断并吐出"比较时超出的最大递归深度" RuntimeError.这只是一个堆栈溢出?有办法解决它吗?

python recursion

357
推荐指数
13
解决办法
40万
查看次数

获取索引上的字段数

出于优化目的,我试图减少总场数.然而,在我要做之前,我想知道我实际拥有多少个字段._stats端点中似乎没有任何信息,我无法弄清楚迁移工具如何进行其字段计数计算.

是否有某种方法,无论是使用端点还是通过其他方式,来获取指定索引的总字段数?

elasticsearch logstash

9
推荐指数
4
解决办法
6321
查看次数

配置字典中的继承

我想要的是

从yaml配置我得到一个python字典,如下所示:

conf = {
    'cc0': {
        'subselect': 
            {'roi_spectra': [0], 'roi_x_pixel_spec': 'slice(400, 1200)'},
        'spec': 
            {'subselect': {'x_property': 'wavenumber'}},

        'trace': 
            {'subselect': {'something': 'jaja', 'roi_spectra': [1, 2]}}
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,关键字"subselect"对于所有子级别都是通用的,其值始终是dict,但它的存在是可选的.嵌套量可能会改变.我正在寻找一个功能,允许我执行以下操作:

# desired function that uses recursion I belive.
collect_config(conf, 'trace', 'subselect')
Run Code Online (Sandbox Code Playgroud)

其中'trace'是dicts字典的关键,可能是'subselect'字典作为值.

它应该回来

{'subselect':{
    'something': 'jaja', 
    'roi_spectra': [1, 2], 
    'roi_x_pixel_spec': 
    'slice(400, 1200)'
}
Run Code Online (Sandbox Code Playgroud)

或者如果我要求

collect_config(conf, "spec", "subselect")
Run Code Online (Sandbox Code Playgroud)

它应该回来

{'subselect':{
    'roi_spectra': [0], 
    'roi_x_pixel_spec': 
    'slice(400, 1200)',
    'x_property': 'wavenumber'
}
Run Code Online (Sandbox Code Playgroud)

我基本上想要的是一种方法,将键的值从顶层传递到较低层,并使较低层覆盖顶层值. 很像类的继承,但有字典.

所以我需要一个横跨dict的函数,找到一个到达所需键的路径(这里是"trace"或"spec"并用更高级别的值填充它的值(这里是"subselect"),但只有更高的值级别值不存在.

一个糟糕的解决方案

我目前有一种看起来如下的实现.

# This traverses the dict and gives me the path to …
Run Code Online (Sandbox Code Playgroud)

python recursion inheritance dictionary

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

在嵌套的Python字典中搜索密钥

我有一些像这样的Python词典:

A = {id: {idnumber: condition},.... 
Run Code Online (Sandbox Code Playgroud)

例如

A = {1: {11 : 567.54}, 2: {14 : 123.13}, .....
Run Code Online (Sandbox Code Playgroud)

我需要搜索字典中是否有任何字典idnumber == 11并使用condition.但如果在整个字典中没有idnumber == 11,我需要继续下一个字典.

这是我的尝试:

for id, idnumber in A.iteritems():
    if 11 in idnumber.keys(): 
       calculate = ......
    else:
       break
Run Code Online (Sandbox Code Playgroud)

python recursion dictionary nested

5
推荐指数
2
解决办法
8655
查看次数

spacy NER中区分国家和城市

我正在尝试使用 spacy NER 从组织地址中提取国家/地区,但是,它使用相同的标签标记国家和城市GPE。有什么办法可以区分它们吗?

例如:

nlp = en_core_web_sm.load()

doc= nlp('Resilience Engineering Institute, Tempe, AZ, United States; Naval Postgraduate School, Department of Operations Research, Monterey, CA, United States; Arizona State University, School of Sustainable Engineering and the Built Environment, Tempe, AZ, United States; Arizona State University, School for the Future of Innovation in Society, Tempe, AZ, United States')

for ent in doc.ents:
    if ent.label_ == 'GPE':
        print(ent.text)
Run Code Online (Sandbox Code Playgroud)

回馈

Tempe
AZ
United States
United States
Tempe
AZ
United States
Tempe …
Run Code Online (Sandbox Code Playgroud)

python spacy

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

在嵌套字典中搜索键

我在Python中有一个JSON对象,表示为嵌套的字典列表.(字典的某些值本身就是字典,依此类推.)

我希望能够在这个嵌套字典结构的所有分支上搜索一个键.
当我找到密钥时,我希望能够返回通向它的完整密钥路径.

例如:我正在寻找具有"特殊地址密钥"的"特殊代理",但并非所有特殊代理都拥有它,以及那些在其JSON中的不一致路径中拥有它的人.

所以我搜索关键Special Address code.结果应该返回:

/'People'/'SpecialAgents'/'007'/'Special Address code'/  
Run Code Online (Sandbox Code Playgroud)

所以我将能够以这种方式获得其信息:

json_obj['People']['SpecialAgents']['007']['Special Address code']
Run Code Online (Sandbox Code Playgroud)

请注意,这与此问题类似,但我需要找到所有密钥实例的完整路径.

python

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

在python中展平嵌套的有序词典列表

我有点困惑如何从Python中的有序列表的嵌套列表中提取信息.例如:

list_of_interest = [OrderedDict([('name', 'Viscozyme'), ('company', 'Roche (Chile)')]),
 [OrderedDict([('name', 'Davictrel'), ('company', None)]),
  OrderedDict([('name', 'Enbrel Sureclick'), ('company', None)]),
  OrderedDict([('name', 'Tunex'), ('company', None)])],
 OrderedDict([('name', 'Angiox'), ('company', None)]),
 [OrderedDict([('name', 'Enantone'), ('company', None)]),
  OrderedDict([('name', 'Leuplin'), ('company', 'Takeda')]),
  OrderedDict([('name', 'LeuProMaxx'), ('company', 'Baxter/Teva')]),
  OrderedDict([('name', 'Leupromer'), ('company', None)]),
  OrderedDict([('name', 'Lutrate'), ('company', None)]),
  OrderedDict([('name', 'Memryte'), ('company', 'Curaxis')]),
  OrderedDict([('name', 'Prostap 3'), ('company', 'Takeda UK')]),
  OrderedDict([('name', 'Prostap SR'), ('company', 'Takeda UK')]),
  OrderedDict([('name', 'Viadur'), ('company', 'Bayer AG')])],
 OrderedDict([('name', 'Geref'), ('company', 'Serono Pharma')])]
Run Code Online (Sandbox Code Playgroud)

我需要提取所有项目'name'.

所以我需要一个功能:

get_names(list_of_interest) --> ['Viscozyme', 'Davictrel', 'Enbrel …
Run Code Online (Sandbox Code Playgroud)

python dictionary list

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