我有这样的名单。
首先:(苹果,榴莲,樱桃,鸡蛋,香蕉)
第二:((banana,b1,b2,b3,b4), (榴莲,D1,D2,D3,D4), (苹果,A1,A2,A3,A4), (鸡蛋,E1,E2,E3,E4) (樱桃,C1,C2,C3,C4))
我想使用第一个列表排列第二个列表。 所以我期待这一点。
((apple,a1,a2,a3,a4),
(durian,d1,d2,d3,d4),
(cherry,c1,c2,c3,c4),
(egg,e1,e2,e3,e4),
(banana,b1,b2,b3,b4))
请让我知道如何做到这一点。 感谢。
答案 0 :(得分:3)
首先 - 那些是元组,其次你提供的所有样本实际上都不是字符串,所以我为你做了。
现在让我们先将其转换为字典:
data = [('banana','b1','b2','b3','b4'),
('durian','d1','d2','d3','d4'),
('apple','a1','a2','a3','a4'),
('egg','e1','e2','e3','e4'),
('cherry','c1','c2','c3','c4')]
data = {t[0]:t for t in data} # make dictionary with dictionary comprehension.
我们没有选择器:
selector = ['apple', 'durian', 'cherry', 'egg', 'banana']
然后我们订购并创建列表:
results = [data[key] for key in selector] # order result by selector
<强>答案:强>
[('apple', 'a1', 'a2', 'a3', 'a4'),
('durian', 'd1', 'd2', 'd3', 'd4'),
('cherry', 'c1', 'c2', 'c3', 'c4'),
('egg', 'e1', 'e2', 'e3', 'e4'),
('banana', 'b1', 'b2', 'b3', 'b4')]
答案 1 :(得分:1)
使用字典怎么样?你可以试试这个:
# first : (apple, durian, cherry, egg, banana)
# second : ((banana,b1,b2,b3,b4), (durian,d1,d2,d3,d4), (apple,a1,a2,a3,a4), (egg,e1,e2,e3,e4), (cherry,c1,c2,c3,c4))
d = {}
for lst in second:
d[lst[0]] = lst
result = []
for item in first:
# you shall ensure that key `item` exists in `d`
result.append(d[item])
答案 2 :(得分:0)
In [25]: d = {L[0]:list(L[1:]) for L in second}
In [26]: answer = [[k]+d[k] for k in first]
In [27]: answer
Out[27]:
[['apple', 'a1', 'a2', 'a3', 'a4'],
['durian', 'd1', 'd2', 'd3', 'd4'],
['cherry', 'c1', 'c2', 'c3', 'c4'],
['egg', 'e1', 'e2', 'e3', 'e4'],
['banana', 'b1', 'b2', 'b3', 'b4']]