簡體   English   中英

Python:將列表中的兩個項目作為key:pair加入字典

[英]Python: adding two items from a list as key:pair to dictionary

嘗試將項目列表作為key:value對轉換為dict:

def make_dict(a_list, category_name):

    a_dict = {}


    for i in range(0, len(a_list), 2):
        a_dict[a_list[i]] = a_list[i+1]
    return a_dict

得到這個錯誤:

a_dict[a_list[i]] = a_list[i+1]
IndexError: list index out of range

我知道為什么,但不確定如何解決。 有什么辦法嗎?

另外,它會在超出范圍之前立即收集key:value對。

您的代碼應該對列表中的偶數個元素起作用,但是當元素的數量為奇數時,索引i+1處的元素不存在,因此會出現錯誤。

您還可以zip同一個迭代器以使用dict理解將成對的連續值作為對使用:

In [239]: lst = [1, 2, 3, 4, 5, 6]                                                                                                                                                                          

In [240]: {k: v for k, v in zip(*[iter(l)] * 2)}                                                                                                                                                            
Out[240]: {1: 2, 3: 4, 5: 6}

對於奇數的元素,你可以使用itertools.zip_longestfillvalue以填補缺失的最后一個值:

In [241]: lst = [1, 2, 3, 4, 5, 6, 7]                                                                                                                                                                       

In [242]: {k: v for k, v in itertools.zip_longest(*[iter(l)] * 2, fillvalue=None)}                                                                                                                          
Out[242]: {1: 2, 3: 4, 5: 6, 7: None}

您的循環當前以列表的長度( len(a_list) )結尾,但是以該長度值調用索引會破壞它。 只需修復循環即可盡早停止:

    for i in range(0, len(a_list)-1, 2): #subtract 1 from length!
        a_dict[a_list[i]] = a_list[i+1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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