如何在没有for循环的情况下将字典打印为键和计数(如果值是列表)?

时间:2019-03-24 07:08:29

标签: python python-3.x dictionary

假设我有如下字典

dic = {0: [1,2,3,4,5], 1:[7,4,6]}

在将字典打印为键和计数时,首先更新字典

for k, v in dic.items():
   dic[k] = len(v)

print(dic)

>>> {0:5, 1:3}

在没有for循环的情况下,还有更好的方法吗?

4 个答案:

答案 0 :(得分:0)

您是什么意思而不迭代?如果您不想使用for循环,则可以使用map函数:

d = dict(map(lambda kv: (kv[0], len(kv[1])), d.items()))

答案 1 :(得分:0)

如果没有迭代只是意味着没有for循环,则可以将dict值映射到len函数,用dict键压缩它们并传递压缩的键值与dict构造函数配对:

>>> d = {0: [1,2,3,4,5], 1:[7,4,6]}
>>> dict(zip(d, map(len, d.values())))
{0: 5, 1: 3}
>>>

答案 2 :(得分:0)

首先不要命名列表“ list”或字典“ dict”,因为这是python中保留该数据类型的类的保留字。

您可以使用字典理解力来做到这一点,如下所示:

d = {0: [1,2,3,4,5], 1:[7,4,6]}
d = {i:len(j) for i,j in d.items()}
print(d)

答案 3 :(得分:0)

或使用:

print({k:len(dic[k]) for k in dic})

输出:

{0: 5, 1: 3}