簡體   English   中英

使用循環,從列表創建字典

[英]Using a loop, to create a dictionary from a list

我正在嘗試創建一個函數來創建一個字典,給出一個將被輸入的列表。 我認為通過使用 for 循環,我可以獲取列表,創建鍵,然后使用循環輸入列表中每個項目的值。

使用此列表作為輸入:

simpsons = 'Homer', 'Bart', 'Marge', 'Lisa'

def create_dict_from_list(names):
    name_dict = {}
    for name in names:
        name_dict['name']= name
    return name_dict

這僅返回一個鍵值對。 看起來字典不會創建多個值,這就是為什么它只返回一個而不遍歷列表的其余部分。

當我更改name_dict[name] = name ,它將創建所有鍵、值,但鍵和值都是名稱。

當我更改name_dict[name] = 'name' ,我得到鍵值反轉,但它返回列表中的所有 4 個項目。

對於您想要的答案(基於我對您問題的理解),我不確定您為什么使用 for 循環。 您的函數中不需要 for 循環。 只需一個簡單的任務即可完成這項工作。 你不必要地把它復雜化了。

simpsons = ['Homer', 'Bart', 'Marge', 'Lisa']

def create_dict_from_list(names):
    name_dict = {}
    name_dict['name'] = names # <--- No need of for loop
    return name_dict
create_dict_from_list(simpsons)
# {'name': ['Homer', 'Bart', 'Marge', 'Lisa']}

您可以將默認值設置為鍵'name'的空列表[]對於給定的示例,如果要將所有名稱分配給鍵,則可以不使用for循環(如@Bazingaa 所回答) 'name' 另一方面,如果您想有選擇地分配名稱,請使用for循環。

simpsons = 'Homer', 'Bart', 'Marge', 'Lisa'

def create_dict_from_list(names):
    name_dict = {}
    name_dict.setdefault('name',[])
    for name in names:
        name_dict['name'].append(name)
    return name_dict
create_dict_from_list(simpsons)

輸出

{'name': ['Homer', 'Bart', 'Marge', 'Lisa']}

暫無
暫無

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

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