Mat*_*Soh 2 python list duplicates python-3.x
假设我有一些列表,其中包含一些重复的数字.
list = [1,1,1,1,2,3,4,4,1,2,5,6]
Run Code Online (Sandbox Code Playgroud)
我想识别列表中重复和连续的所有元素,包括第一个元素,即将列表中的所有元素替换为字典中的值:
mydict = {1: 'a', 4: 'd'}
list = ['a','a','a','a',2,3,'d','d',1,2,5,6]
Run Code Online (Sandbox Code Playgroud)
因为我也想替换重复的第一个实例,所以我很困惑如何继续!
itertools.groupby是你的朋友:
from itertools import groupby
mydict = {1: 'a', 4: 'd'}
A = [1,1,1,1,2,3,4,4,1,2,5,6]
res = []
for k, g in groupby(A):
size = len(list(g))
if size > 1:
res.extend([mydict[k]] * size) # see note 1
else:
res.append(k)
print(res) # -> ['a', 'a', 'a', 'a', 2, 3, 'd', 'd', 1, 2, 5, 6]
Run Code Online (Sandbox Code Playgroud)
笔记:
KeyErrors并且想要重新使用默认值,请使用mydict.get(k, <default>)而不是mydict[k]