2013-06-28 4 views
1

이 작업을 수행하는 방법에 대한 내 머리를 긁적 된 목록의 마지막에 넣어하지 않는 경우 키가 존재하는 경우 키에 의해 사전,이 딕셔너리에서 지금정렬이

sorted_dict = sorted(dict['values'], 
        key=lambda k: k['a']['b']) 

일부 값의 a는 ab 값을 갖고, 어떤 것은 그렇지 않습니다. 나는 그것을 b 값으로 정렬하고 그것이 존재하지 않는다면 그냥리스트의 뒤쪽에 놓기를 원합니다. 어쨌든 b 값을 가진 사람들과 그렇지 않은 사람들을 위해 a의 값을 나누는 것과 같은 복잡한 코드가 없으면 어떻게해야할까요?

답변

3

아니요.

key=lambda k: ('b' not in k['a'], k['a'].get('b', None)) 
+0

파이썬으로 가져온 복잡한 코드. –

+0

p3에서 몇 가지 사항이 변경되었습니다. 내가 왜 당신의 정렬이 p3에서 작동하는지 궁금하지만, 키 함수에 의해 생성 된 튜플을 직접 정렬하면 : print (sorted [[(False, 1), (True, None), (False, None)]))) 'TypeError : unorderable types : NoneType() 7stud

+0

''k [ 'a']. get ('b', None)'에는'None'이 필요 없습니다. '.get()'의 기본 반환 값은 이미'None'입니다. I 추가한다 – FastTurtle