Python: превратить словарь в список списков - PullRequest
6 голосов
/ 15 сентября 2011

По сути, у меня есть словарь, который я хочу преобразовать в список списков (с каждым списком компонентов, состоящим из ключа и значения из словаря).

Причина, по которой я это делаю, заключается в том, что я могу перебирать этот новый список с помощью цикла for и что-то делать с ключом и значением.Если есть более простой способ сделать это, я открыт для предложений.

Ответы [ 4 ]

15 голосов
/ 16 июня 2016

Как насчет этого решения?Не нужно загрязнять руки ненужными петлями, чище и короче !!!

d = { 'a': 1, 'b': 2, 'c': 3 }
map(list, d.items())
[['a', 1], ['c', 3], ['b', 2]]
12 голосов
/ 15 сентября 2011
for key, value in my_dict.iteritems()

Это будет перебирать словарь, сохраняя каждый ключ в key и каждое значение в value. См. документы .

3 голосов
/ 15 сентября 2011

для перебора ключей и значений словаря:

for key, value in D.iteritems():
    # do something with them
0 голосов
/ 13 августа 2014

Я не уверен, что это то, о чем вы просите, но именно так я бы превратил словарь в список, используя его ключ в качестве кортежа.

new_list = []
dict = {test:1, test:2, test:3}
for key, value in dict.iteritems():
    new_list.append((key, value))

Вот где яя делаю что-то очень похожее на то, что вы хотите.

 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) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...