我正在使用下面的代码来扫描字典并删除重复的列表。
nduplicates = {k:[list(y) for y in {tuple(x[1:]) for x in v}] for k,v in resulsts.items()}
字典results
采用以下格式:
{'example': [['london','5.123', '-3.123'],['bham','5.123', '-3.123'],['manc','51.23', '-3.453']], [etc..]}
应用列表推导工作并删除重复的嵌套列表,排除第一个元素;像这样离开字典:
{'example': [['london','5.123', '-3.123'],['manc','51.23', '-3.453']]}
我想知道是否有不同的方法来删除与已经正常工作的解决方案相对的重复项。我也尝试过,但无论如何这还没有完全发挥作用:
print({k: [y for x, y in enumerate(v) \
if y not in v[1:x]] for k, v in results.items()})
感谢您的帮助!列表理解/删除重复代码的任何其他工作将不胜感激!
答案 0 :(得分:1)
检查我的代码:
def remove_dup(my_lst):
from copy import deepcopy
from collections import OrderedDict
my_lst = list(reversed(deepcopy(my_lst)))
ordred_dict = OrderedDict()
for sub_list in my_lst:
ordred_dict[tuple(sub_list[1:])] = sub_list
return list(ordred_dict.values())
def main():
results = {'example': [['london', '5.123', '-3.123'], ['bham', '5.123', '-3.123'], ['manc', '51.23', '-3.453']]}
nduplicates = {k: remove_dup(v) for k, v in results.items()}
print(nduplicates)
if __name__ == "__main__":
main()
你得到了:
{'example': [['manc', '51.23', '-3.453'], ['london', '5.123', '-3.123']]}
关于反向列表的代码保证如果找到重复,则保留第一个元素。