我有一个像这样的 python 包目录:
proj/
mod_a/
__init__.py
x.py
submod_x/
__init__.py
y.py
mod_b/
__init__.py
z.py
Run Code Online (Sandbox Code Playgroud)
与 x.py:
import submod_x.y
Run Code Online (Sandbox Code Playgroud)
z.py:
import sys, os.path
sys.path.append(os.path.abspath('../'))
import mod_a.x
Run Code Online (Sandbox Code Playgroud)
现在当我跑步时:
$ python2 z.py
Run Code Online (Sandbox Code Playgroud)
我用 y.py 编码完成了事情
但是当我跑步时:
$ python3 z.py
Run Code Online (Sandbox Code Playgroud)
我有一个例外:
Traceback (most recent call last):
File "z.py", line 4, in <module>
import mod_a.x
File ".../proj/mod_a/x.py", line 1, in <module>
import submod_x.y
ImportError: No module named 'submod_x'
Run Code Online (Sandbox Code Playgroud)
我想知道Python 2和Python 3在导入包时有什么区别,以及如何在Python 3中使用绝对导入来导入位于其父目录中的包?
我是Elasticsearch的新手,并提出一个问题,即Elasticsearch嵌套查询是否只返回嵌套字段的匹配嵌套文档.
例如,我有一个名为blog嵌套字段的类型comments
{
"id": 1,
...
"comments":[
{"content":"Michael is a basketball player"},
{"content":"David is a soccer player"}
]
}
{
"id": 2,
...
"comments":[
{"content":"Wayne is a soccer player"},
{"content":"Steven is also a soccer player"},
]
}
Run Code Online (Sandbox Code Playgroud)
和嵌套查询
{"query":{
"nested":{
"path":"comments",
"query":{"match":{"comments.content":"soccer"}}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要的是搜索带有提及"足球"的评论的博客帖子,其中每个博客文章的评论数量与"足球"相匹配(在示例中它的数量为1,因为另一条评论刚刚提到"篮球").
{"hits":[
{
"id":1,
...
"count_for_comments_that_matches_query":1,
},
{
"id":2,
...
"count_for_comments_that_matches_query":2,
}
]}
Run Code Online (Sandbox Code Playgroud)
然而,似乎Elasticsearch总是返回完整的文档,所以我怎么能实现它,或者我不能?
我有这样的列表的字典:
y = {'a':[1,2,3], 'b':[4,5], 'c':[6]}
Run Code Online (Sandbox Code Playgroud)
我想将dict转换为元组列表,其中每个元素都是一个包含dict的一个键和值列表中的一个元素的元组:
x = [
('a',1),('a',2),('a',3),
('b',4),('b',5),
('c',6)
]
Run Code Online (Sandbox Code Playgroud)
我的代码是这样的:
x = reduce(lambda p,q:p+q, map(lambda (u,v):[(u,t) for t in v], y.iteritems()))
Run Code Online (Sandbox Code Playgroud)
这样的代码似乎难以阅读,所以我想知道是否有任何pythonic方式,或者更确切地说,是否有一种列表理解方式来做这样的事情?