问题描述
li=[[1,5,3,2,6],[2,6,3]]
di1={}
for i in range(3):
for j in set(li[i]):
if j in di1:
di1[j]=di1[j]+li[i].count(j)
else:
di1[j]=li[i].count(j)
print(di1)
output:{1: 1,2: 3,3: 6,5: 6,6: 3}
di={}
di={j:di[j]+li[i].count(j) if j in di else li[i].count(j) for i in range(3) for j in set(li[i])}
ouput:{1: 1,2: 1,3: 3,5: 3,6: 1}
我需要在变量li中查找元素的数量,当我尝试使用for循环时,它可以正常工作,但是如果我尝试使用dict-comprehension,则得到不同的输出,那么代码出了什么问题? dict-comprehension中的if不会进入。
解决方法
我认为问题在于您依赖于要构建的字典。 一个简单的解决方案是首先将列表弄平,然后再进行字典理解。
li = [item for sublist in li for item in sublist ]
di={j:li.count(j) for j in sorted(li) }
print(di)