如果我有一个嵌套列表,如:
application/x-www-form-urlencoded
在这个例子中,' AB'在前两个嵌套列表中很常见。如何删除' AB'在两个列表中同时保持其他元素不变?一般情况下,如何从两个或多个嵌套列表中出现的每个嵌套列表中删除一个元素,以便每个嵌套列表都是唯一的?
l = [['AB','BCD','TGH'], ['UTY','AB','WEQ'],['XZY','LIY']]
是否可以使用for循环执行此操作?
谢谢
答案 0 :(得分:0)
from collections import Counter
from itertools import chain
counts = Counter(chain(*ls)) # find counts
result = [[e for e in l if counts[e] == 1] for l in ls] # take uniqs
答案 1 :(得分:0)
一种选择是做这样的事情:
from collections import Counter
counts = Counter([b for a in l for b in a])
for a in l:
for b in a:
if counts[b] > 1:
a.remove(b)
编辑:如果你想避免(非常有用的标准库)collections
模块(参见评论),你可以用以下自定义计数器替换上面的counts
:
counts = {}
for a in l:
for b in a:
if b in counts:
counts[b] += 1
else:
counts[b] = 1
答案 2 :(得分:0)
没有导入的简短解决方案是首先创建原始列表的getSignedUrl
d版本,然后遍历原始列表并删除计数大于1的元素:
reduce
应打印:
lst = lst = [['AB','BCD','TGH'], ['UTY','AB','WEQ'],['XZY','LIY']]
reduced_lst = [y for x in lst for y in x]
output_lst = []
for chunk in lst:
chunk_copy = chunk[:]
for elm in chunk:
if reduced_lst.count(elm)>1:
chunk_copy.remove(elm)
output_lst.append(chunk_copy)
print(output_lst)
我希望这证明有用。