如何比较两个嵌套列表并计算出现次数并保存到字典中

时间:2015-01-07 04:21:38

标签: python

我有两个嵌套列表,

l1 = [[1],[2],[1,2],[3],[2,2]]
l2 = [[1],[3],[3,4],[1],[1,2],[3],[4],[1],[2],[1,2],[3],[2,2]]

我想弄清楚l1中每个元素在l2中找出的次数,并将值保存到字典中,其中字典的键是每个元素和值的出现次数将是元素本身。我做了如下:

dic = {}
for item in l1:
  count = 0
  for items in l2:
     if item == items:
        count += 1
  dic[count] = item
return dic

答案是dic = {3:[1], 1:[2], 2:[1,2], 3:[3], 1:[2,2]} 但我得到dic = {1:[2], 2:[1,2], 3:[3]}。我没有得到确切的答案。你能帮我解决一下这个问题吗?

2 个答案:

答案 0 :(得分:1)

问题是l1中的多个项目具有相同的计数。

[2,2][2]都出现一次,所以当它们被分配到字典中时会覆盖另一个。

反转这一行:

dic[count] = item

到此:

dic[item] = count

请记住,您不能在字典中复制密钥,因此无法获得所请求的输出!

答案 1 :(得分:0)

l1 = [[1],[2],[1,2],[3],[2,2]]
l2 = [[1],[3],[3,4],[1],[1,2],[3],[4],[1],[2],[1,2],[3],[2,2]]
dic = {}
for i in l1:
  item = tuple(i)
  count = 0
  for j in l2:
     items = tuple(j)
     if item == items:
        count += 1
  dic[item] = count

print  dic

输出:

{(1, 2): 2, (2,): 1, (3,): 3, (1,): 3, (2, 2): 1}

dict键是列表,值是计数

相关问题