2017-10-19 5 views
0

J'ai la structure de données suivante par laquelle je voudrais extraire une paire clé: valeur donnée en recherchant la valeur spécifique. Cas d'utilisation: J'ai besoin d'extraire u'LOB_B ': u'mcsmsg.example.net' de la dict.comment extraire une paire de valeurs de clé spécifique d'un dict avec une liste imbriquée de dicts

{u'status': u'successful', 
u'availableFqdnList': [ 
    {u'LOB_A': u'pcload.us.example.net'}, 
    {u'LOB_B': u'mcsmsg.example.net'}, 
    {u'LOB_B': u'gtxd.example.net'}, 
    {u'LOB_B': u'diamond.example.net'}]} 

for key, value in my_dict.values(): 
    if value == 'mcsmsg.example.net': 
     print("Print key value pairs for available FQDN list") 
     print key, "=", value 

Erreur = pour la clé, valeur my_dict.values ​​(): ValueError: trop de valeurs pour déballer

+1

Vous dictionnaire est invalide. Il ne doit pas contenir de clés en double. –

Répondre

0

En tant que simple à comprendre la manière d'obtenir ce fait

d = {u'status': u'successful', 
     u'availableFqdnList': [{u'LOB_A': u'pcload.us.example.net'}, 
           {u'LOB_B': u'mcsmsg.example.net'}, 
           {u'LOB_B': u'gtxd.example.net'}, 
           {u'LOB_B': u'diamond.example.net'}]} 

for val in d['availableFqdnList']: 
    if val.values()[0] == "mcsmsg.example.net": 
     print("%s=%s" %(val.keys()[0], val.values()[0])) 
+0

Cela a fonctionné parfaitement. Geeze semble si simple après avoir vu le code. Merci! – user3613102

1

Je ne pense pas que les valeurs() est la fonction que vous voulez.

Vous voulez probablement des éléments() à la place.

1

Si vous utilisez python2, vous pouvez à l'aide iteritems()

Ou pour python3, il est items()

Ils iter la clé, la valeur dans le dictionnaire pour vous.

dic = {'a':1,'b':2} 

for key,value in dic.items(): 
    print(key) 
    print(value) 

il retournera

a 
1 

b 
2