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
오히려 그 속성의 값보다는 호출 객체를 반환 : 나는 이것을 시도했다. 따라서 위의 코드는 다음과 같은 오류를 나타냅니다.
TypeError: int() argument must be a string or a number, not 'operator.attrgetter'
그런 사전을 정렬하는 데 문제가 있습니까? 또는 먼저 대수 결과를 생성하기 위해 사전 처리해야합니다.
사전 정렬 할 수없는 익명 함수를 사용하여 아마 더 낫다. 먼저 'OrderedDict'가 필요합니다. 그러나 당신은 진짜로 dict 또는 명부가 있는가? –
'operator.attrgetter ('x')'는 함수입니다. 'int()'함수의 인수가 될 수 없습니다. 람다 사용을 고려하십시오. – Bach
@PauloBu 사전의 키나 값을 가져 와서 정렬 된 목록을 생성 할 수 있습니다. OP가하는 일이 바로 그 것입니다. 당신은 전문 용어에 대해 초조하게 말하고 있습니다. – delnan