簡體   English   中英

將元組列表轉換為字典

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM