从多个列表和变量构建复杂的python字典

时间:2013-01-23 14:24:17

标签: python list dictionary map lambda

我是python和编程的新手。我看了很多关于字典,列表,地图,lambda,列表推导等的问题,但我似乎无法将特定的功能放在一起构建我想要的字典。

我可以按如下方式描述我想要制作的字典:

    #goal: make a dictionary that describes a form

    FORMNAME = 'aspnetForm'
    nicks = ['username','password','submit'] #nicknames I want to use
    names = [FIELD_USERNAME, FIELD_PWD, BUTTON_LOGIN] #field names
    values =  ['myusername','mypass',''] #field values
    types =  ['text', 'password', 'submit'] #control types

    INPUTS = [{nicks[0]:{'name':names[0],'value':values[0],'type':types[0]}},
    {nicks[1]:{'name':names[1],'value':values[1],'type':types[1]}},
    {nicks[2]:{'name':names[2],'value':values[2],'type':types[2]}}]

    LOGINFORM = {'name':FORMNAME, 'input':INPUTS} #this is the final dictionary I want to build

请用最好的python方法的简洁和优雅来打动我,以便我可以学习LOGINFORM!

我想使用这个字典来填充机械化中的表单。这是我需要填充的唯一形式。我可以用“漫长的”方式填充这个表单,但我想学习如何用字典系统地填充它。

我的主要目的是学习如何填充词典。但我提前感谢你在我学会如何回答我自己的问题之前没有提出更好的方法。

1 个答案:

答案 0 :(得分:5)

您可以使用zip

LOGINFORM = {'name': FORMNAME, 'input':
     [{nick: {'name': name, 'value': value, 'type': sort}}
       for nick, name, value, sort in zip(nicks, names, values, types)]}

我避免使用type作为变量名,因为它是builtin function/type,但实际上你可以在这里使用它。