2016-05-19 2 views
0

Nach Pyro4 Installation und das Hinzufügen von pyrolite und serpent Gläsern auf Java bauen Pfad, Codes ähnlich die client and server side python codes verwendet, die mit dem Python-Client-Codes OK arbeiten, ich einige Codes verwenden, ähnlich das Java-Beispiel auf https://pythonhosted.org/Pyro4/pyrolite.html ein Python-Server-Objekt zuzugreifen.Pyro4: Wie man eine Liste von Tupeln mit Pyrolite in Java erzeugt?

import net.razorvine.pyro.*; 

NameServerProxy ns = NameServerProxy.locateNS("127.0.0.1"); 
PyroProxy remoteobject = new PyroProxy(ns.lookup("example.greeting")); 
List<String> inputWords = getExampleWords(); 
Object result = remoteobject.call("predictedResults", inputWords); 
System.out.println("result = "+result); 
remoteobject.close(); 
ns.close(); 

Die gedruckte Python clent Seiten Ergebnis ähnelt:

>> print 'result = \n' + str(result) 

result = 
[(u'aaa', 0.88877496454662064), (u'bbb', 0.019192749769012061), (u'?', 0.0070963814247323219), (u'ccc', 0.0068011253515576015), (u'home', 0.00148328236618)] 

Die Datenstruktur ist eine Liste von Tupeln, von denen jeder ein Paar von Streich- und float, wie:

result = [] 
for i in xrange(10): 
    result.append((list[i], value[i])) 

Und das Java-Ergebnis gedruckt auf der Konsole ist:

>> Object result = remoteobject.call("predictedResults", inputWords); 
>> System.out.println("result = "+result); 

result = [[Ljava.lang.Object;@2e0fa5d3, [Ljava.lang.Object;@5010be6, [Ljava.lang.Object;@685f4c2e, [Ljava.lang.Object;@7daf6ecc, [Ljava.lang.Object;@2e5d6d97] 

Die Frage ist: Wie kann 'Object result = remoteobject.call ("projectedResults", inputWords) erfolgreich umgewandelt werden?' zu einer Liste von Paaren von String und Float in Java?

+0

Das ist wirklich eine Java Frage, kein Python ein –

Antwort

0

Nach Versuch und Irrtum fand ich endlich die Antwort:

Object result = remoteobject.call("predictedResults", inputWords); 
System.out.println("result = " + result); 

ArrayList<Object[]> resultList = (ArrayList<Object[]>) result; 
for (Object element : resultList) { 
    Object[] pair = (Object[]) element; 
    System.out.println((String)pair[0] + ", " + (Double)pair[1]); 
} 
Verwandte Themen