【发布时间】:2014-04-19 21:15:43
【问题描述】:
如何根据特定元素(在本例中为第二个元素)从 2d 列表中删除连续重复项。
我尝试了一些与 itertools 的组合,但没有运气。
谁能建议我如何解决这个问题?
输入
192.168.1.232 >>>>> 173.194.36.64 , 14 , 15 , 16
192.168.1.232 >>>>> 173.194.36.64 , 14 , 15 , 17
192.168.1.232 >>>>> 173.194.36.119 , 23 , 30 , 31
192.168.1.232 >>>>> 173.194.36.98 , 24 , 40 , 41
192.168.1.232 >>>>> 173.194.36.98 , 24 , 40 , 62
192.168.1.232 >>>>> 173.194.36.74 , 25 , 42 , 43
192.168.1.232 >>>>> 173.194.36.74 , 25 , 42 , 65
192.168.1.232 >>>>> 173.194.36.74 , 26 , 44 , 45
192.168.1.232 >>>>> 173.194.36.74 , 26 , 44 , 66
192.168.1.232 >>>>> 173.194.36.78 , 27 , 46 , 47
输出
192.168.1.232 >>>>> 173.194.36.64 , 14 , 15 , 16
192.168.1.232 >>>>> 173.194.36.119 , 23 , 30 , 31
192.168.1.232 >>>>> 173.194.36.98 , 24 , 40 , 41
192.168.1.232 >>>>> 173.194.36.74 , 25 , 42 , 43
192.168.1.232 >>>>> 173.194.36.78 , 27 , 46 , 47
这是预期的输出。
更新
上面给出的是一个打印得很好的列表形式。
实际列表如下所示。
>>> for x in connection_frame:
print x
['192.168.1.232', '173.194.36.64', 14, 15, 16]
['192.168.1.232', '173.194.36.64', 14, 15, 17]
['192.168.1.232', '173.194.36.119', 23, 30, 31]
['192.168.1.232', '173.194.36.98', 24, 40, 41]
['192.168.1.232', '173.194.36.98', 24, 40, 62]
['192.168.1.232', '173.194.36.74', 25, 42, 43]
['192.168.1.232', '173.194.36.74', 25, 42, 65]
['192.168.1.232', '173.194.36.74', 26, 44, 45]
['192.168.1.232', '173.194.36.74', 26, 44, 66]
['192.168.1.232', '173.194.36.78', 27, 46, 47]
['192.168.1.232', '173.194.36.78', 27, 46, 67]
['192.168.1.232', '173.194.36.78', 28, 48, 49]
['192.168.1.232', '173.194.36.78', 28, 48, 68]
['192.168.1.232', '173.194.36.79', 29, 50, 51]
['192.168.1.232', '173.194.36.79', 29, 50, 69]
['192.168.1.232', '173.194.36.119', 32, 52, 53]
['192.168.1.232', '173.194.36.119', 32, 52, 74]
【问题讨论】:
-
您只需将它们打成一组即可删除重复项
-
您使用的实际数据类型是什么。这些行是字符串、元组等吗?
-
我也相信 OP 只希望删除与某些其他元素重复的元素。不仅仅是没有重复。
-
@thecreator232,如果顺序无关紧要,我们怎么能有有意义的连续条目?
标签: python python-2.7 arraylist nested-lists itertools