2013-07-04 9 views
6

Mam strukturę słownika. Na przykład:Python pobiera ciąg znaków (klucz + wartość) ze słownika Python

dict = {key1 : value1 ,key2 : value2} 

Co chcę to łańcuch, który łączy w sobie klucz i wartość

Potrzebne ciąg - >> key1_value1, key2_value2

Wszelkie pythonowy sposób, aby uzyskać to pomoże.

Dzięki

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()) 

Odpowiedz

15

list z klucz-wartość str s,

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

Albo jeśli chcesz pojedynczy ciąg wszystkich par klucz-wartość,

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

EDYCJA:

Może szukasz czegoś takiego,

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 

Użytkownik może również chcąc break po print ING - trudno wiedzieć dokładnie, co to jest.

+0

Drogi Jareda, dzięki za pomoc, może u pls spojrzeć jeszcze raz na pytanie obróbce. Myślę, że są niepotrzebne pętle, które biegną w kółko. – Peter

+0

Dzięki za szybką reakcję! rozwiązaniem jest to, czego chciałem. Zamiast wydruku (który służy do testowania) "zwracam" ciąg znaków. – Peter

3

Zakładając Pythona 2.x, chciałbym użyć czegoś jak ten

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

Dzięki za pomoc .. ale chcę uzyskać zwrot wszystkich par klucz-wartość, które są w dyktacie, gdy d.get (k) == v – Peter

Powiązane problemy