2

現在、リストベースの要素を介して多数の要素を辞書に割り当てています。

そのような :

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

ありがとう、

4

3 に答える 3

3
>>> 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)]

したがって、このイテラブルをコンストラクターにフィードして、目的の辞書を作成します。

于 2013-05-20T05:56:55.553 に答える
2

ここで使用でき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
于 2013-05-20T05:56:46.637 に答える
1

あなたの質問をよく理解していれば、たとえば次のことができます。

fields = ["HOSTNAME", "TTL", "CLASS", "TYPE", "DETAILS"]
query_dict = dict(zip(fields, z))
于 2013-05-20T05:57:37.527 に答える