Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
py4j:dict到JAVA映射_Java_Python_Python 3.x_Py4j - Fatal编程技术网

py4j:dict到JAVA映射

py4j:dict到JAVA映射,java,python,python-3.x,py4j,Java,Python,Python 3.x,Py4j,我目前正在使用python3访问HBase。我的做法是使用py4j调用我正在编写的用于访问HBase的javaapi 我有一个问题与创建一个接受限定符和值的Put对象有关 我想把一个字典传递给一个需要hashmap的JAVA类。通过py4j可以吗 我不想迭代地调用每个列限定符的Put。我想把dict传递给py4j,它应该作为JAVA端的HashMap接收 请您提供一些提示/指点,说明如何做到这一点。有两种方法可以满足您的需求: 您可以在python方面使用它。如果您经常传递字典,这是很好的,但是

我目前正在使用python3访问HBase。我的做法是使用py4j调用我正在编写的用于访问HBase的javaapi

我有一个问题与创建一个接受限定符和值的Put对象有关

我想把一个字典传递给一个需要hashmap的JAVA类。通过py4j可以吗

我不想迭代地调用每个列限定符的Put。我想把dict传递给py4j,它应该作为JAVA端的HashMap接收


请您提供一些提示/指点,说明如何做到这一点。

有两种方法可以满足您的需求:

  • 您可以在python方面使用它。如果您经常传递字典,这是很好的,但是您不经常在python端修改它。如果字典是在java端修改的,并且您希望看到python端的修改,那么这也很好
  • 当调用Java方法时,Py4J可以被调用。请注意,字典将被复制,在Java端执行的任何更改都不会反映在Python端
  • 最简单的解决办法是#1我认为:

    >>> m = gateway.jvm.java.util.HashMap()
    >>> m["a"] = 0
    >>> m.put("b",1)
    >>> m
    {u'a': 0, u'b': 1}
    >>> u"b" in m
    True
    >>> del(m["a"])
    >>> m
    {u'b': 1}
    >>> m["c"] = 2 
    

    m[“a”]=0这样的语句是否都通过套接字发送一些数据?我相信是的。100次修改将发送100个套接字请求。还是我的理解错了?我想用python创建包含100个项目的字典,并将其发送到JAVA,以获取任何信息:)。我认为第二种方法对这种情况更有效。这就是我的理解。请让我知道它是否不正确或我遗漏了什么…事实上,第二种解决方案是最适合您在评论中描述的用法。对于第一个解决方案,100次赋值将导致100次套接字交换,这是正确的。最后一个问题。是否可以从返回NavigableMap的JAVA函数中获取字典。字节可以是递归的哈希映射。。。我想我应该选择simplejson。您有什么建议:)不确定,但是Py4J提供了一个基于Map接口的dict接口(它不绑定到HashMap)。如果您使用的是字节数组,那么应该使用git的最新版本,因为自上次发布以来,字节数组的转换修复了许多错误。@Barthelemy非常感谢py4j。我有一个问题,我正在从java端调用一个带有映射列表的python函数。如果我想将一个新值(array,narray)设置为参数java map(py4j.java\u collections.JavaMap)之一,我会得到一个错误:“numpy.ndarray”对象没有属性“\u get\u object\u id”。有什么想法吗?甚至还有类似于python dict的转换吗?因为用正常的口述我没有任何问题