8
votes

Python: transformer un dictionnaire dans une liste de listes

Fondamentalement, j'ai un dictionnaire que je souhaite transformer en une liste de listes (avec chaque liste de composants constitué de la clé et de la valeur du dictionnaire).

La raison pour laquelle je fais est, c'est que je puisse itérer dans cette nouvelle liste avec une boucle et faire quelque chose avec la clé et la valeur. S'il est un moyen plus facile de le faire, je suis ouvert aux suggestions.


1 commentaires

Pouvez-vous fournir un exemple de dict ?


4 Réponses :


13
votes
for key, value in my_dict.iteritems()
This will iterate through the dictionary, storing each key in key and each value in value.
See the docs.

1 commentaires

Dans Python 3, utilisez pour la clé, valeur dans iTer (my_dict.items ()) à la place.



3
votes

itérer sur les clés et les valeurs de dictionnaire: xxx


0 commentaires

0
votes

Je ne sais pas si c'est ce que vous demandez, mais c'est ainsi que je vais transformer un dictionnaire dans une liste à l'aide de sa clé comme valeur tulée.

 if str(vm_mor) == vm['config.annotation']:
    annotation= pickle.load(open(str(vm_mor), "rb"))
    print annotation

    sql_check_exist = '''select a.vm_mor, b.license_id, c.product from vms a , vm_licenses b, licenses c where a.vm_id = b.vm_id and b.license_id = c.license_id and a.vm_mor = '%s' ''' % str(vm_mor) 
    cursor_exist.execute(sql_check_exist)
    database_license = []

    for vm_mor, license_id, product in cursor_exist:
       database_license.append((product,license_id))

    checklist_database_license = [int(i[1]) for i in database_license] #make a list of 2nd element of all the tuples in the database_license list
    check_me = annotation['license']

    for product, license_id in check_me:
       if license_id in checklist_database_license:
          print "do nothing"
       else:
          del annotation['license']
          annotation['license'] = database_license
          change = True

    if change == True:         
       change_annotation(vm_mor, annotation)
       change = False    

 else:
    print vm['config.name']
    pickle_mor(vm_mor,vm) 


0 commentaires

28
votes

Que diriez-vous de cette solution? Pas besoin de rendre votre main sale par une boucle inutile à travers, plus propre et plus courte !!!

d = { 'a': 1, 'b': 2, 'c': 3 }
list(map(list, d.items()))
[['a', 1], ['c', 3], ['b', 2]]


0 commentaires