使用两个列表创建字典(无压缩)PYTHON

时间:2019-04-30 09:38:51

标签: python

我正在尝试使用两个列表创建一个字典,而不使用zip。有人可以帮助我完成代码。如果列表为空,则该函数应返回一个空字典。

key_list=[1,2,3,4]
value_list=['a','b','c','d']

def list_to_dict(key_list,value_list):
    new_dict={}
    if len(key_list)!=0 and len(value_list)!=0:
        for i in range(len(key_list)):
            dict[key_list[i]]=value_list[i]
            return new_dict


我想要的输出是

new_dict = {1:'a',2:'b',3:'c',4:'d'}

5 个答案:

答案 0 :(得分:1)

您的退货应超出for循环范围,并检查两个列表的min长度:

def list_to_dict(key_list,value_list):
    new_dict = {}
    if len(key_list) != 0 and len(value_list) != 0:
        for i in range(min(len(key_list), len(value_list))):
            new_dict[key_list[i]] = value_list[i]
    return new_dict

答案 1 :(得分:1)

key_list=[1,2,3,4]
value_list=['a','b','c','d']

def list_to_dict(key_list,value_list):
    new_dict={}
    if len(key_list)!=0 and len(value_list)!=0 and len(key_list) == len(value_list):
        for key, index in enumerate(key_list):
            dict[key]=value_list[index]

        return new_dict

您的缩进错误。另外,两个列表的长度必须相同,以避免出错,因此我添加了该检查。如需更多学习,请查找枚举。 GL完成您剩余的作业:)

答案 2 :(得分:1)

尝试一下。

key_list=[1,2,3,4]
value_list=['a','b','c','d']

def list_to_dict(key_list,value_list):
    new_dict={}
    if len(key_list)!=0 and len(value_list)!=0:
        for i in range(len(key_list)):
            new_dict[key_list[i]]=value_list[i]
    return new_dict

答案 3 :(得分:1)

key_list=[1,2,3,4]
value_list=['a','b','c','d']

def list_to_dict(key_list,value_list):
    """using dict comprehension, creating new key-value pair
      for each key present in key list againt the value present in the value list."""

    new_dict={key_list[i]:value_list[i] for i in range(len(key_list))}

    return new_dict

result = list_to_dict(key_list,value_list)
print(result)

输出

{1: 'a', 2: 'b', 3: 'c', 4: 'd'}

答案 4 :(得分:1)

您可以使用字典理解:

key_list = [1, 2, 3, 4]
value_list=['a', 'b', 'c', 'd']

def list_to_dict(key_list, value_list):
    assert len(key_list) == len(value_list), "Both input lists should have equal length"
    return {key_list[i]: value_list[i] for i in range(len(key_list))}