删除 python 中重复的列表值

deleting duplication of list value in python

我有一个列表,

list1 = [[1,4,0,0],[2,0,1,0],[9,8,4,0],[0,2,5,3]]

这个列表是这样的;

list1 =[[d[x][y] for y in key] for x in key] 

所以当我使用 writer.writerows(list1) 编写此 list1 时,其 excel table 显示为:

1 4 0 0
2 0 1 0
9 8 4 0 
0 2 5 3

如你所知,它不是对称的,我做了一个新列表,

list2 = [[d[x][y]+d[y][x] for y in key] for x in key]

我本可以在 excel 文件中制作此 table:

2 6 9 0
6 0 9 2
9 9 8 5
0 2 5 6

但是问题来了。我必须制作一个文件,如果 x==y,在 d[x][y] 中,则不应计算其值。所以我希望我的结果是这样的:

1 6 9 0 
6 0 9 2
9 9 4 5 
0 2 5 3

仅供参考,我用过:

d = defaultdict(lambda:defaultdict(int))
keys = sorted(d)

我该如何处理这个问题?

你可以使用一个双列表推导式,和一个三元运算符来select 什么时候添加元素:

代码:

list2 = [[list1[x][y] + list1[y][x] if x != y else list1[x][y]
          for x in range(len(list1))] for y in range(len(list1[0]))]

测试代码:

list1 = [[1, 4, 0, 0], [2, 0, 1, 0], [9, 8, 4, 0], [0, 2, 5, 3]]
list2 = [[list1[x][y] + list1[y][x] if x != y else list1[x][y]
          for x in range(len(list1))] for y in range(len(list1[0]))]
print(list2)

结果:

[[1, 6, 9, 0], [6, 0, 9, 2], [9, 9, 4, 5], [0, 2, 5, 3]]