1
說,我有這個類定義:排序對象的詞典由代數運算的結果
class A:
def __init__(self, x, y):
self.x = x
self.y = y
假設屬性的x,y保持整數值,我「A」對象的詞典 - 讓我們調用'a_dict'。我想根據x和y的代數運算的結果對這個字典進行排序。我嘗試這樣做:
a_dict_sorted = sorted(a_dict.values(), key=100*int(operator.attrgetter('x'))/(float(operator.attrgetter('x')) + float(operator.attrgetter('y')))
顯然operator.attrgetter
Callable對象,而不是屬性的值。所以上面的代碼給出了這個錯誤:
TypeError: int() argument must be a string or a number, not 'operator.attrgetter'
是否有任何問題來排序這樣的字典?或者我必須預處理它才能先創建代數結果然後進行相應的排序?
詞典不能進行排序。你首先需要一個OrderedDict。但你真的有字典或清單嗎? –
'operator.attrgetter('x')'是一個函數。它不能是int()函數的參數。考慮使用lambdas。 – Bach
@PauloBu您可以獲取字典的鍵或值,並生成這些列表的排序列表。這正是OP正在嘗試做的,你只是對術語感到焦慮。 – delnan