小编zak*_*ako的帖子

如何在Python 3中使用绝对导入来导入位于其父目录中的包?

我有一个像这样的 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中使用绝对导入来导入位于其父目录中的包?

python python-3.x

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

May Elasticsearch嵌套查询只返回嵌套字段的匹配嵌套文档吗?

我是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总是返回完整的文档,所以我怎么能实现它,或者我不能?

elasticsearch

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

如何将列表的字典转换为python中键和值的元组列表?

我有这样的列表的字典:

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方式,或者更确切地说,是否有一种列表理解方式来做这样的事情?

python dictionary list python-2.7

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