1

Python辞書のガイダンスが必要です。できれば助けてください..

私は次のような辞書を持っています (約 100 の名前がありますが、サンプルを示しています):

{'John':{'Maths':40,
        'Eng':50,
        'Phy':67,
        'Chem':78}
'Kate':{'Maths':98,
       'Chem':83}
'Julia':{'Phy':76,
         'Eng':67,
         'Maths':56,
         'Bio':78}
'Sam':{'Phy':23,
       'Eng':67,
       'Chem':98,
       'Maths':56}}

私が望むのは、学生の名前とそれぞれの英語のマークを含む 2 つの列 (または 2 つの配列を持つ) のテーブルを作成することです。(つまり、Julia の名前はリストにあってはなりません)。

Pythonでこれをエレガントに行うことは可能ですか? :-/

4

2 に答える 2

2

これはリスト内包表記を使用して仕事をします。それをエレガントに考えてください:

h = {'John': {'Maths': 40, 'Eng':50, 'Phy': 67, 'Chem': 78},
     'Kate': {'Maths': 98, 'Chem': 83},
     'Julia': {'Phy': 76, 'Eng': 67, 'Maths': 56, 'Bio': 78},
     'Sam': {'Phy': 23, 'Eng': 67, 'Chem': 98, 'Maths': 56}}
print [(k, v.get('Eng')) for k, v in h.iteritems() if 'Bio' not in v]

出力:

[('Sam', 67), ('John', 50), ('Kate', None)]

ループで使用printして、テーブルとしてフォーマットします。for

于 2013-09-20T12:54:15.007 に答える