2016-07-25 9 views
-2

私は以下の辞書リストを持っています。リストは既にソートされています。今私は労働者でグループ化し、彼の "prskill"を取得する必要がありますが、他のオプションがない場合、彼はなしを取得します。pythonリストの辞書とフィルタの問題

各作業者には、最大2つの辞書があります.1つは "prskill"なし、もう1つは実際の値です。一つだけの辞書がある場合、彼の「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 /あなたがあなたの代わりに、簡単な辞書をorderedDict使用する必要があり、その後命じたでそれをしたい場合は、こののPは、unorderdあります。