我目前通過基於列表的元素將許多元素分配給字典。將元素/鍵分配給詞典
如:
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
謝謝,
您可以在這裏使用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
>>> 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)]
因此,我們在這個迭代飼料,導致我們所期望的字典中的構造函數。
如果我深知你的問題,你可以做例子:
fields = ["HOSTNAME", "TTL", "CLASS", "TYPE", "DETAILS"]
query_dict = dict(zip(fields, z))