本文實例講述了Python從序列中移除重復項且保持元素間順序不變的方法。分享給大家供大家參考,具體如下:
python算法與數據結構。問題:從序列中移除重復的元素,但仍然保持剩下的元素順序不變
解決方案:
python 鏈表?1、如果序列中的值時可哈希(hashable)的,可以通過使用集合和生成器解決。
# example.py
#
# Remove duplicate entries from a sequence while keeping order
def dedupe(items):
seen = set()
for item in items:
if item not in seen:
yield item
seen.add(item)
if __name__ == '__main__':
a = [1,5,2,1,9,10]
print(a)
print(list(dedupe(a)))
運行結果:
[1,10]
[1,10]
2、如果序列時不可哈希的,想要去除重復項,需要對上述代碼稍作修改:
# example2.py
#
# Remove duplicate entries from a sequence while keeping order
def dedupe(items,key=None):
seen = set()
for item in items:
val = item if key is None else key(item)
if val not in seen:
yield item
seen.add(val)
if __name__ == '__main__':
a = [
{'x': 2,'y': 3},{'x': 1,'y': 4},{'x': 2,{'x': 10,'y': 15}
]
print(a)
print(list(dedupe(a,key=lambda a: (a['x'],a['y']))))
運行結果:
[{'x': 2,'y': 15}]
[{'x': 2,'y': 15}]
key參數的作用是指定一個函數用來將序列中的元素轉化為可哈希的類型,如此可以檢測重復項。
希望本文所述對大家Python程序設計有所幫助。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态