我正面临一个特殊的问题。我有两个列表,如下所示:
lst_1 = ['a','b','c','d','e']
lst_2 = ['x','y','z','w']
我想使用如下功能创建字典:
def test_dict(some_list):
lst_2 = ['x','y','z','w']
d = dict(zip(lst_2,lst_1))
return d
[当我以test_dict(lst_1)
的身份运行上述功能时,会得到以下结果
{'z':'c','x':'a','y':'b'} # Note that no key:values are showing for 'w':'d'
但是,当我在不使用函数的情况下运行上述代码时,它的输出如下:
{'z':'c','x':'a','y':'b','w':'d'}
为什么有这种区别?为什么我不能使用函数获得正确的输出?
将要压缩的第二个列表作为参数,如下所示:
def test_dict(some_list):
lst_2 = ['x','y','z','w']
d = dict(zip(lst_2,some_list))
return d
然后通过将名为lst_1的列表作为参数传递来进行调用:
test_dict(lst_1)
注意:按照惯例,您应该有两个函数参数,以便将两个压缩列表手动作为参数传递,而不是在函数本身中对lst_2进行硬编码。
此功能工作正常。如果您不必这样做,则不要对函数内部的内容进行硬编码。
lst_1 = ['a','b','c','d','e']
lst_2 = ['x','y','z','w']
def test_dict(key, values):
return dict(zip(key,values))
print(test_dict(lst_2, lst_1))
# {'x': 'a', 'y': 'b', 'z': 'c', 'w': 'd'}