Python中文
首页
教程
问答
标签
搜索
登录
注册
使用python有条件地按顺序迭代搜索项的最佳方法
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p><strong>更新</strong>:问题已经修改,可以在大型代码示例前后阅读更多信息。你知道吗</p> <hr/> <p>考虑以下搜索词列表:</p> <pre class="lang-python prettyprint-override"><code>searchterms = {'term1': address, 'term2': name, 'term3': 'coordinates'} </code></pre> <p>所有人都可以是“南”(np.nan公司或者包含一些有效的搜索项。你知道吗</p> <p>假设我有一个函数:</p> <pre class="lang-python prettyprint-override"><code>def askGoogle(term): # return query result or skip to next </code></pre> <p>如果term1是<code>nan</code>或server返回<code>NotFound</code>,那么如何以最佳和最有效的方式从term1开始-尝试下一个,直到一个返回结果或全部返回<code>nan</code>或<code>NotFound</code>。你知道吗</p> <p>到目前为止,我已经结束了一个巨大的如果elif else块的恐怖(我会节省你的麻烦,它是7级深)。你知道吗</p> <p>我对python还不熟悉,但这不是有一些简单的方法吗?也许是递归函数?你知道吗</p> <p>注意:我试着搜索这里和谷歌,但我真的不知道要搜索什么。你知道吗</p> <p><strong>编辑</strong>:<code>nan</code>来自<code>pd.DataFrame</code>(<code>np.nan</code>)并且<code>NotFound</code><em>(实际上,它是<code>"ZERO_RETURNS"</code>)</em>,如果搜索项没有给出任何信息,则从服务器返回。上面说得不对,但必须按顺序审理这些条款。你知道吗</p> <p><strong>EDIT2</strong>:以下是我用<em>开始的代码(为可读性而清理)</em>: 你知道吗</p> <pre><code>query = '' if not term1 == 'nan' or not term2 == 'nan' or not term3 == 'nan' : if not term1 == 'nan': if not term2 == 'nan': if not term3 == 'nan': # All found. query = askGoogle(term1, self.queryParams(term1)) if query['status'] == 'NotFound': query = askGoogle(term) if query['status'] == 'NotFound': query = askGoogle(term) else: query = askGoogle(term) else: query = askGoogle(term) else: # Only term2 and term1 found. query = askGoogle(term) if query['status'] == 'NotFound': query = askGoogle(term) if query['status'] == 'NotFound': query = askGoogle(term) else: query = askGoogle(term) else: if not term3 == 'nan': # Only term1 and term3 found. query = askGoogle(term) if term2 query = askGoogle(term) else: # Only term1 term1 = askGoogle(term) elif not term2 == 'nan': # Only term2 and term3 found. if not term3 == 'nan': term2 = askGoogle(term) if not term2: term3 = askGoogle(term) else: # Only term2 found term2 = askGoogle(term) elif not term3 == 'nan': # term3 found term3 = askGoogle(term) else: query = 'All terms this loop is exhausted, nothing found' </code></pre> <p>它显然不工作,我只是崩溃之前,我可以完成它。你知道吗</p> <hr/> <p><strong>更新</strong>:我最初寻找的是一种直接在<code>if</code>中设置变量的方法,我没有注意到:</p> <pre class="lang-python prettyprint-override"><code>if term = askGoogle(term) != 'ZERO_RESULTS': return term </code></pre> <p>但是,这是使用python的<a href="https://stackoverflow.com/questions/1550134/how-to-assign-a-variable-in-if-and-then-return-it-python#1551223"><strong>not possible</strong></a>。 相反,在<a href="https://chat.stackoverflow.com/users/2826818/alexbhandari">@alexbhandari</a>的帮助下,我得到了以下代码:</p> <pre class="lang-python prettyprint-override"><code>import numpy as np def askGoogle(self, type, terms): query = '' for term in terms: if type == 1: self.setParams(self.queryParams(term)) self.setCallType('textsearch') elif type == 2: self.setParams(self.detailsParams(term)) self.setCallType('placeid') if term != np.nan: query = json.loads(requests.get(url=self.url, params=self.params)) if query['status'] == 'OK': break return query </code></pre> <p>我可以使用以下方法调用:</p> <pre class="lang-python prettyprint-override"><code>resp = askGoogle(x, [term1, term2, term3]) </code></pre> <p><strong>注意</strong>:编号是为了区分不同类型的API调用。它在运行,我想我现在就知道了。你知道吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您只需使用for循环遍历字典:</p> <pre><code>def askOracle(dict): for v in dict.values(): if v: return v print(askOracle(searchterms)) </code></pre> <p>这将返回它到达的第一个搜索项。。否则它将返回<code>None</code></p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
9 回答
如何添加表示整数的擦边字符串?
6 回答
如何添加要在Bokeh中使用的新font.ttf文件?
2 回答
如何添加要显示的矩阵XY轴编号和XY轴
8 回答
如何添加计数?
10 回答
如何添加计数器函数?
5 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
2 回答
如何添加计数器来跟踪while循环中的月份和年份?
6 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
4 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
10 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
6 回答
如何添加评论拉梅尔亚姆
8 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
10 回答
如何添加谷歌地点自动完成到Flask?
3 回答
如何添加超时、python discord bot
3 回答
如何添加超过1dp的检查
5 回答
如何添加距离方法
1 回答
如何添加跟随游戏的敌人精灵
8 回答
如何添加路径以便python可以找到程序?
4 回答
如何添加身份验证/安全性以使用happybase访问HBase?
9 回答