我有一个像这样的字符串列表:
X = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
Y = [ 0, 1, 1, 0, 1, 2, 2, 0, 1]
Run Code Online (Sandbox Code Playgroud)
使用Y中的值对X进行排序以获得以下输出的最短方法是什么?
["a", "d", "h", "b", "c", "e", "i", "f", "g"]
Run Code Online (Sandbox Code Playgroud)
具有相同"密钥"的元素的顺序无关紧要.我可以使用for构造,但我很好奇是否有更短的方法.有什么建议?
我有一个元组列表to_order,如:
to_order = [(0, 1), (1, 3), (2, 2), (3,2)]
Run Code Online (Sandbox Code Playgroud)
以及一个列表,它给出了应用于每个元组的第二个元素的顺序to_order:
order = [2, 1, 3]
Run Code Online (Sandbox Code Playgroud)
所以我正在寻找一种获得此输出的方法:
ordered_list = [(2, 2), (3,2), (0, 1), (1, 3)]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
说,我有一个清单A = [[3,5],[1,3],[6,1]].
我说还有另一份清单 B = [6,1,3]
我想对列表A进行排序,以便A变为[[6,1],[1,3],[3,5]],适合给定的BIe,每个A子列表的第一个成员应该根据B进行排序.
我有一个元组列表,例如。
l1 = [(1, 'a', 'x'), (2, 'b', 'y'), (3, 'a', 'z'), (4, 'c', 'xyz')]
Run Code Online (Sandbox Code Playgroud)
我还有另一个清单
l2 = ['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
我想l1根据 中存在的顺序对每个元组的第二个值进行排序l2。最终结果应该是
l1 = [(1, 'a', 'x'), (3, 'a', 'z'), (2, 'b', 'y'), (4, 'c', 'xyz')]
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,第二个值为 的元组a首先出现,然后是具有第二个值的元组b,最后是具有 的元组c。
我写了以下内容:
l = []
for i in l2:
for j in l1:
if i == j(1):
l.append(j)
Run Code Online (Sandbox Code Playgroud)
这非常简单。但我想知道是否有任何 pythonic 方法来完成这件事?