2013-07-04 7 views
6

Ich habe Wörterbuchstruktur. Zum Beispiel:Python bekommen eine Zeichenfolge (Schlüssel + Wert) aus Python Wörterbuch

dict = {key1 : value1 ,key2 : value2} 

Was ich will, ist die Zeichenfolge, die den Schlüssel und den Wert

Benötigte Saite verbindet - >> key1_value1, hilft key2_value2

Jeden Pythonic Weg, dies zu erhalten.

Dank

def checkCommonNodes(id , rs): 
    for r in rs: 
     for key , value in r.iteritems(): 
      kv = key+"_"+value 
      if kv == id: 
       print "".join('{}_{}'.format(k,v) for k,v in r.iteritems()) 

Antwort

15

A list von Schlüssel-Wert str s,

>>> d = {'key1': 'value1', 'key2': 'value2'} 
>>> ['{}_{}'.format(k,v) for k,v in d.iteritems()] 
['key2_value2', 'key1_value1'] 

Oder wenn Sie eine einzelne Zeichenfolge aller Paare Schlüsselwert,

>>> ', '.join(['{}_{}'.format(k,v) for k,v in d.iteritems()]) 
'key2_value2, key1_value1' 

EDIT:

Vielleicht suchen Sie so etwas wie,

def checkCommonNodes(id, rs): 
    id_key, id_value = id.split('_') 
    for r in rs: 
     try: 
      if r[id_key] == id_value: 
       print "".join('{}_{}'.format(k,v) for k,v in r.iteritems()) 
     except KeyError: 
      continue 

Sie auch break nach print ing wollen werden - schwer, genau zu wissen, was das für ist.

+0

Lieber Jared, Danke für die Hilfe verwenden, kann u schauen pls wieder die editierte Frage. Ich denke, es gibt unnötige Schleifen, die immer wieder laufen. – Peter

+0

Danke für die schnelle Antwort! Deine Lösung ist was ich wollte. Anstatt zu drucken (was zum Testen ist) "gebe" ich den String zurück. – Peter

3

Python 2.x Unter der Annahme, würde ich so etwas wie dieser

dict = {'key1': 'value1', 'key2': 'value2'} 
str = ''.join(['%s_%s' % (k,v) for k,v in dict.iteritems()]) 
0
def checkCommonNodes(id, rs): 
    k,v = id.split('_') 
    for d in rs: 
     if d.get(k) == v: 
      return id 
    retun None 
+0

Danke für die Hilfe .. aber ich möchte die Rückgabe alle key_values ​​Paare, die in Diktaten ist, wenn d.get (k) == v – Peter

Verwandte Themen