附加背景: while True: Surface = input(Fmt.cleaveSurface).split('-');print('\n') if Surface != [''] and (len(Surface) == 2): [ self.cleaved.update({i + 1 : [*layers[i]]}) for i in range(int(Surface[0]),int(Surface[1])+1) ] else: print('Exiting...\n'); raise SystemExit for i in range(len(self.cleaved)): if self.format == 'Abinit': cellSort = sorted(self.cleaved.items(), key = lambda x:(x[1][0],x[1][self.sortBy[0]])); print(Fmt.abinit.format(*cellSort[i][1][1:4],cellSort[i][1][0])) if self.format in ['','Quantum']: cellSort = sorted(self.cleaved.items(), key = lambda x: (x[1][self.sortBy[0]],x[1][self.sortBy[1]],x[1][self.sortBy[2]])) print(Fmt.quantum.format(*cellSort[i][1])) netCharge = int(sum([self.charges.get(data[0], 'Null') for data in self.cleaved.values()]));我想清理一下這個(gè)聲明:layeredCell = sorted(cell.items(), key = lambda x:(x[1][self.sortBy[0]],x[1][self.sortBy[1]],x[1][self.sortBy[2]]))以下是 self.cleaved 格式的示例:{ 2: ['O', 0.01, -0.8, -0.195], 3: ['Pb', -0.251, -0.574, -0.1135], ...self.sortBy是 1,2,3 的一些排列的列表,它規(guī)定了 self.cleaved 的排序順序示例:sortBy = [3,1,2] 我不確定解包運(yùn)算符需要使用什么語法,但我猜它會類似于*[x[1][*self.sortBy[:3]]?
1 回答

楊魅力
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
我們可以使用列表理解來做這樣的事情
key = lambda x: tuple(x[1][self.sortBy[i]] for i in range(3))
添加回答
舉報(bào)
0/150
提交
取消