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