迭代并创建dicts列表

时间:2013-11-22 12:56:41

标签: python

我需要迭代结果以生成具有以下结构的dics列表:

items = [{'clients': [
         {'value': i[4], 'first_name': i[1], 'last_name': i[3]},
         {'value': i[4], 'first_name': i[1], 'last_name': i[3]} 
         ]
}]

for i in results:
       items = ?

修改

 [0] => tuple(5) 
        [0] => int(396043) 
        [1] => str(45) "First name"
        [2] => int(532) 
        [3] => str(45) "Second name"
        [4] => float(1.0) 
 [1] => tuple(5) 
        [0] => int(374286) 
        [1] => str(24) "First name"
        [2] => int(537) 
        [3] => str(24) "Second name"
        [4] => float(1.0) 

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用列表推导基于results中的每个元组生成词典:

items = [{
    'clients': [{'value': i[4], 'first_name': i[1], 'last_name': i[3]} for i in results]
}]

您还可以使用元组赋值在循环中生成更有意义的名称

items = [{
    'clients': [{'value': value, 'first_name': first, 'last_name': last} 
                for _, first, _, last, value in results]
}]

您也可以在显式for循环中执行此操作,但列表理解会更快。显式循环版本:

clients = []
items = [{'clients': clients}]
for _, first, _, last, value in results:
    clients.append({'value': value, 'first_name': first, 'last_name': last})

这里_是约定用于我们忽略的循环变量的名称。它只是表示我们不会再使用_,但需要一个分配目标。