假设目前我有一个列表:
L = [[1,'JAYCE'],[2,'AMIE'],[3,'JACK'],[4,'STEVE'],[5,'JAYCE']]
我还有一个列表,其中包含按顺序排列的姓名:
sortedNames = ['AMIE','JACK','JAYCE','JAYCE','STEVE']
我想要得到的输出是,基于排序的名称列表,我想要按照排序的顺序(基于sortedNames列表)将ID添加回名称。你知道吗
finalist = [[2,'AMIE'],[3,'JACK'],[1,'JAYCE'],[5,'JAYCE'],[4,'STEVE']]
注意,Jayce出现了两次,所以即使第一次出现的Jayce有5个,然后是1,它也完全好。你知道吗
我一直在想:
L = [[1,'JAYCE'],[2,'AMIE'],[3,'JACK'],[4,'STEVE'],[5,'JAYCE']]
sortedNames = ['AMIE','JACK','JAYCE','JAYCE','STEVE']
finalist = []
for i in sortedNames:
j = 0
if i in L[j][1]:
finalist.append(L[0] + i)
j+=1
print(finalist)
我得到一个错误,说:
TypeError: can only concatenate list (not "str") to list
我肯定是加错了。你知道吗
可以使用sorted()函数执行此操作,并使用其
key
参数查找存储名称的位置:结果是:
因此,只要您的数据表现良好,就可以使用defaultdict将数字分组为DEQUE:
然后简单地说:
我意识到在列表中使用
pop
是一个丑陋的缺点。。。你知道吗这里有一种只使用
dict
和list
的方法:两种方法都是O(N)。你知道吗
编辑
我刚刚意识到,您真正想要的不是生成排序名称列表,而是直接使用键对L
排序:您可以通过将每个名称分组到为该名称找到的所有id的列表来创建字典。然后,可以应用
next
。你知道吗输出:
编辑:
也可以利用
sorted
:输出:
相关问题 更多 >
编程相关推荐