2016-07-25 2 views
-2

다음 사전 목록이 있습니다. 목록이 이미 정렬되었습니다. 이제 나는 노동자별로 그룹화하고 그의 "직업"을 구해야 만하지만 다른 옵션이 없다면 그는 아무 것도 얻지 못한다.python 사전 목록 그룹화 및 필터 문제

각 작업자에게는 최대 2 개의 사전이 있으며 하나에는 "prskill"이없고 하나에는 실제 값이 있습니다. 단 하나의 사전이 있다면 그의 "prskill"없음

내 목록

sorted = [{worker_nick: 1B prskill: None }, 
{worker_nick: B1 prskill: None }, 
{worker_nick: B2 prskill: None }, 
{worker_nick: Božić prskill: None }, 
{worker_nick: Božić prskill: Bolničar }, 
{worker_nick: Cimermančič prskill: None }, 
{worker_nick: Cimermančič prskill: Bolničar }, 
{worker_nick: CindrićJ prskill: None }, 
{worker_nick: CindrićJ prskill: razno }, 
{worker_nick: CipurićA prskill: None }, 
{worker_nick: CipurićA prskill: Strežnik }, 
{worker_nick: Dančulović prskill: None }, 
{worker_nick: Dančulović prskill: Strežnik }, 
{worker_nick: Dragovan prskill: Bolničar }, 
{worker_nick: Dragovan prskill: None }, 
{worker_nick: Fofana prskill: SestraOdd }, 
{worker_nick: Fofana prskill: None }, 
{worker_nick: GovednikM prskill: None }, 
{worker_nick: GovednikM prskill: Strežnik }, 
{worker_nick: Hoenigman prskill: None }, 
{worker_nick: Hoenigman prskill: SestraOdd }, 
{worker_nick: Husič prskill: None }, 
{worker_nick: Huskić prskill: Bolničar }, 
{worker_nick: Huskić prskill: None }, 
{worker_nick: JD-Šuligoj prskill: JD }, 
{worker_nick: JD-Šuligoj prskill: None }, 
{worker_nick: Jakša prskill: Gospodinja }, 
{worker_nick: Jakša prskill: None }, 
{worker_nick: Kastelic prskill: SestraOdd }, 
{worker_nick: Kastelic prskill: None }, 
{worker_nick: Lukinić prskill: SestraOdd }, 
{worker_nick: Lukinić prskill: None }, 
{worker_nick: MaceleJ prskill: None }, 
{worker_nick: MaceleJ prskill: Bolničar }, 
{worker_nick: MaceleM prskill: SestraAmb }, 
{worker_nick: MaceleM prskill: None }, 
{worker_nick: Miketič prskill: Bolničar }, 
{worker_nick: Miketič prskill: None }, 
{worker_nick: MikešićG prskill: SestraOdd }, 
{worker_nick: MikešićG prskill: None }, 
{worker_nick: Muc prskill: None }, 
{worker_nick: Muc prskill: Bolničar }, 
{worker_nick: Petraš prskill: None }, 
{worker_nick: Petraš prskill: Terapevt }, 
{worker_nick: Pezdirc prskill: SestraOdd }, 
{worker_nick: Pezdirc prskill: None }, 
{worker_nick: Prevalšek prskill: Bolničar }, 
{worker_nick: Prevalšek prskill: None }, 
{worker_nick: Ramušćak prskill: SestraAmb }, 
{worker_nick: Ramušćak prskill: None }, 
{worker_nick: S-T1 prskill: None }, 
{worker_nick: S-T2 prskill: None }, 
{worker_nick: S1 prskill: None }, 
{worker_nick: Slanc prskill: Terapevt }, 
{worker_nick: Slanc prskill: None }, 
{worker_nick: Sneljer prskill: Terapevt }, 
{worker_nick: Sneljer prskill: None }, 
{worker_nick: Stepan prskill: SestraOdd }, 
{worker_nick: Stepan prskill: None }, 
{worker_nick: Sudac prskill: None }, 
{worker_nick: Sudac prskill: Bolničar }, 
{worker_nick: Tkalac prskill: Bolničar }, 
{worker_nick: Tkalac prskill: None }, 
{worker_nick: Vidovič prskill: SestraOdd }, 
{worker_nick: Vidovič prskill: None }, 
{worker_nick: VukšiničM prskill: None }, 
{worker_nick: VukšiničM prskill: Bolničar }, 
{worker_nick: Vučič prskill: Bolničar }, 
{worker_nick: Vučič prskill: None }, 
{worker_nick: Čurči prskill: None }, 
{worker_nick: Čurči prskill: Bolničar }, 
{worker_nick: Šterk prskill: None }, 
{worker_nick: Šterk prskill: Namestnik direktorja }] 

모든 제안은?

당신이 코드 아래 시도 할 수

+1

https://docs.python.org/2/library/itertools.html#itertools.groupby – Alik

답변

0

감사합니다 -

filteredResult = {} 
for sortedDict in sorted: 
    if sortedDict['worker_nick'] in filteredResult: 
    if None is not sortedDict['prskill']: 
     filteredResult[sortedDict['worker_nick']] = sortedDict 
    else: 
    filteredResult[sortedDict['worker_nick']] = sortedDict 

filteredResult.values() 

O/당신이 대신 간단한 DICT를 orderedDict 사용할 필요가 다음 순서에하려면이의 P는, unorderd입니다.