【发布时间】:2020-09-26 19:07:28
【问题描述】:
我有一个列表列表
my_list = [["a", "b", "c"],
["d", "f", "g"],
["h", "b", "i"]]
我想删除 my_list 中 element[1] 不是唯一的所有元素。所以执行这个操作后的结果要么是
my_list = [["d", "f", "g"]]
或者一个新的列表也可以使用
new_list = [["d", "f", "g"]]
我目前的方法是:
from collections import Counter
y_list = []
for element in my_list:
x, y, z = element
y_list.append(y)
count_dict = dict(Counter(y_list))
unique_y_list = []
for y, count in count_dict.items():
if count == 1:
unique_y_list.append(y)
valid_elements = []
for element in my_list:
x, y, z = element
if y in unique_y_list:
valid_elements.append(element)
这可行,但似乎效率不高。帮助以更 Python 的方式实现我想要的结果?保持秩序并不重要。
【问题讨论】:
-
“元素[1] 不是唯一的”是什么意思。 ?
-
我的意思是该元素的 index[1] 在 my_list 中多次出现的任何元素。 my_list [0] [1] == "b" ; my_list [2] [1] == "b" ;删除这些元素
-
唯一无效的是你如何重新构造有效元素。不要创建列表,
unique_list,并检查if y in unique_y_list:,而是使用if count_dict[y] == 1: valid_elements.append(element) -
另外,
dict(Counter(y_list))是不必要的。Counter已经是一个字典 -
@juanpa.arrivillaga 谢谢!