1

私はPythonとプログラミング全般に不慣れです。辞書、リスト、マップ、ラムダ、リスト内包表記などに関する多くの質問を見ましたが、必要な辞書を構築するために特定の関数を組み合わせることはできないようです。

作成したい辞書は次のように記述できます。

    #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

LOGINFORM を構築するための最適な python メソッドのシンプルさとエレガンスに感動してください。

この辞書を使用して、機械化のフォームに入力したいと考えています。これは、入力する必要がある唯一のフォームです。このフォームに「長い」方法で入力できますが、辞書を使用して体系的に入力する方法を学びたかったのです。

ここでの私の主な目的は、辞書を作成する方法を学ぶことです。しかし、自分の質問に答える方法を学ぶまで、より良い方法を提案しないことを前もって感謝します.

4

1 に答える 1

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の function/type であるため、変数名としての使用を避けていますが、実際にはここで問題なく使用できます。

于 2013-01-23T14:31:18.550 に答える