Python - 在第一个元素之后从字典中删除重复的嵌套列表

时间:2018-04-02 10:21:17

标签: python dictionary list-comprehension

我正在使用下面的代码来扫描字典并删除重复的列表。

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()})

感谢您的帮助!列表理解/删除重复代码的任何其他工作将不胜感激!

1 个答案:

答案 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']]}

关于反向列表的代码保证如果找到重复,则保留第一个元素。