現在、リストベースの要素を介して多数の要素を辞書に割り当てています。
そのような :
z = mylist
query_dict = {"HOSTNAME":z[0],"TTL":z[1],"CLASS":z[2],"TYPE":z[3],"DETAILS":z[4]}
ただし、リストから変数を割り当てる方法など、これに対してもう少しエレガントなアプローチがあるかどうか疑問に思いました。
a,b,c,d,e = z
ありがとう、
現在、リストベースの要素を介して多数の要素を辞書に割り当てています。
そのような :
z = mylist
query_dict = {"HOSTNAME":z[0],"TTL":z[1],"CLASS":z[2],"TYPE":z[3],"DETAILS":z[4]}
ただし、リストから変数を割り当てる方法など、これに対してもう少しエレガントなアプローチがあるかどうか疑問に思いました。
a,b,c,d,e = z
ありがとう、
>>> terms = ["HOSTNAME","TTL","CLASS","TYPE","DETAILS"]
>>> z = [1,2,3,4,5]
>>> dict(zip(terms,z))
{'HOSTNAME': 1, 'TYPE': 4, 'CLASS': 3, 'DETAILS': 5, 'TTL': 2}
仕組み:
クラスには、dict
イテラブルを取る初期化メソッドがあります。
| dict(iterable) -> new dictionary initialized as if via:
| d = {}
| for k, v in iterable:
| d[k] = v
iterable
フォーム内のキーと値のペアを含む/生成する場所(key,value)
。を使用しzip
て、これらのペアを生成できます。
>>> zip(terms,z)
[('HOSTNAME', 1), ('TTL', 2), ('CLASS', 3), ('TYPE', 4), ('DETAILS', 5)]
したがって、このイテラブルをコンストラクターにフィードして、目的の辞書を作成します。
ここで使用できzip
ます:
>>> keys = ['HOSTNAME','TTL', 'CLASS', 'TYPE', 'DETAILS']
>>> z = range(5)
>>> dict(zip(keys,z))
{'CLASS': 2, 'TYPE': 3, 'DETAILS': 4, 'TTL': 1, 'HOSTNAME': 0}
ここでzip
は、同じインデックスの要素のペアを含むタプルのリストを返します。
>>> zip(keys,z)
[('HOSTNAME', 0), ('TTL', 1), ('CLASS', 2), ('TYPE', 3), ('DETAILS', 4)]
このリストを次のようにdict()
変換できますdict
。
>>> print dict.__doc__
dict(iterable) -> new dictionary initialized as if via:
d = {}
for k, v in iterable:
d[k] = v
あなたの質問をよく理解していれば、たとえば次のことができます。
fields = ["HOSTNAME", "TTL", "CLASS", "TYPE", "DETAILS"]
query_dict = dict(zip(fields, z))