[英]Convert a list of tuples to dictionary
我有一個要轉換為字典的元組列表。 列表中的每個元組都有四個元素:
N = [('WA', 'OR', 'CA', 'HI'), ('MA', 'NY', 'PA', 'FL')]
如何設置字典,其中元組的第一個元素是鍵,值是元素的 rest 的元組?
dict = {"WA": ("OR", "CA", "HI"), "MA": ("NY", "PA", "FL")}
我嘗試了一些類似的東西,但是我得到了第四個元素的截斷版本(至少在我看來,我的實際列表比示例列表大得多):
for i in range(len(N))}:
for v in N[i]:
dict[i] = v[1:4]
從里到外想一想。 給定一個元組,如何創建鍵值對?
tup[0]: tup[1:]
現在只需將其包裝在字典中:
d = {tup[0]: tup[1:] for tup in N}
嘗試這個
>>> N = [('WA', 'OR', 'CA', 'HI'), ('MA', 'NY', 'PA', 'FL')]
>> d = {key: (*values,) for key, *values in N}
>>> d
{'WA': ('OR', 'CA', 'HI'), 'MA': ('NY', 'PA', 'FL')}
for key, *values in N
表示它將每個元組的第一個元素作為key
,並將其余元素放在values
中。
在您的代碼中, v[1:4]
已經是元組的每個元素。 這就是忽略第一個字符的原因。
您不需要嵌套循環。
您可以使用 dict 理解(顯然使用更好的變量名):
N = [('WA', 'OR', 'CA', 'HI'), ('MA', 'NY', 'PA', 'FL')]
d = {t[0]: t[1:] for t in N}
print(d)
輸出
{'WA': ('OR', 'CA', 'HI'), 'MA': ('NY', 'PA', 'FL')}
您也可以直接使用dict
。 它接受一個可迭代的元組,其中第一個元素是鍵,第二個元素是值。
d = dict((t[0], t[1:]) for t in N)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.