是否有内置功能可以从Python中的列表中删除重复项,同时保留顺序?我知道我可以使用一个集来删除重复项,但这会破坏原始顺序.我也知道我可以像这样滚动自己:
def uniq(input):
output = []
for x in input:
if x not in output:
output.append(x)
return output
Run Code Online (Sandbox Code Playgroud)
但是如果可能的话,我想利用内置或更多的Pythonic习语.
假设我有一个词典列表:
[
{'id': 1, 'name': 'john', 'age': 34},
{'id': 1, 'name': 'john', 'age': 34},
{'id': 2, 'name': 'hanna', 'age': 30},
]
Run Code Online (Sandbox Code Playgroud)
我需要获取一个唯一的字典列表(删除重复的字典):
[
{'id': 1, 'name': 'john', 'age': 34},
{'id': 2, 'name': 'hanna', 'age': 30},
]
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我在Python中实现这一目标的最有效方法吗?
我有以下Python 2.7字典数据结构(我不控制源数据 - 来自另一个系统):
{112762853378:
{'dst': ['10.121.4.136'],
'src': ['1.2.3.4'],
'alias': ['www.example.com']
},
112762853385:
{'dst': ['10.121.4.136'],
'src': ['1.2.3.4'],
'alias': ['www.example.com']
},
112760496444:
{'dst': ['10.121.4.136'],
'src': ['1.2.3.4']
},
112760496502:
{'dst': ['10.122.195.34'],
'src': ['4.3.2.1']
},
112765083670: ...
}
字典键将始终是唯一的.Dst,src和别名可以是重复的.所有记录都将始终具有dst和src,但并非每条记录都必须具有第三条记录中显示的别名.
在样本数据中,前两个记录中的任何一个都将被删除(对我来说无关紧要).第三条记录将被认为是唯一的,因为虽然dst和src是相同的,但它缺少别名.
我的目标是删除所有重复dst,src和别名的记录 - 无论密钥是什么.
这个菜鸟怎么做到这一点?
另外,我对Python的有限理解将数据结构解释为字典,其值存储在字典中...这是一个dicts的字典,这是正确的吗?