如何在python中打印一个新的字典,它试图将两个列表加在一起?

mrwjdhj3  于 2023-05-02  发布在  Python
关注(0)|答案(3)|浏览(110)

我现在正试图弄清楚如何创建一个接受两个参数的函数:data_items和key_values并将它们添加在一起以生成新字典。
例如:

Parameters:    ([7, 9],[13, 26, 31])
Should return: {13: 7, 26: 9, 31: ''}
return: {13: 7, 26: 9}

我得到的输出仅限于data_items的数量(2个值:7和9)。我怎么还能打印任何额外的键值与空数据值。
我使用了以下代码:
newList = dict(zip(key_vals, data_list))
这将返回:{13:7,26:9}
我尝试将每个列表转换为字典,然后创建一个最终的字典并使用update方法,但它不起作用:

newList = dict(zip(key_vals, data_list))

我还尝试了以下方法:

D = {item for item in zip(key_vals, data_list)}
    D = dict(D)

return D
4c8rllxm

4c8rllxm1#

你可以使用itertools中的zip_longest:

from itertools import zip_longest

a = [7, 9]
b = [13,26,31]
dict(zip_longest(b, a, fillvalue=""))

>>> {13: 7, 26: 9, 31: ''}
h9vpoimq

h9vpoimq2#

你可以先用所有键和默认值构建dict,然后用给定的值更新:

data_list, key_vals = [7, 9],[13, 26, 31]

D = dict.fromkeys(key_vals, '')
D |= zip(key_vals, data_list)

print(D)

输出(Attempt This Online!):

{13: 7, 26: 9, 31: ''}
eoigrqb6

eoigrqb63#

如果你不想使用zip_logest,你可以写一个Dict解析,如下所示:

D = {k:data_list[i] if len(data_list)>i else '' for i,k in enumerate(key_vals)}

相关问题