2016-10-13 16 views
-3

私は3つの辞書を持っていますが、リストに追加した後ですが、どのようにリストをループしてそのリストを出力できますか?Pythonリストを繰り返す

def_person = {'name' : 'TEST1','JobRole' : 'TESTJOB'} 
def_person1 = {'name' : 'TEST2','JobRole' : 'TESTJOB1'} 
def_person2 = {'name' : 'TEST3','JobRole' : 'TESTJOB2'} 

person = list(def_person.keys()) 
person.append(def_person.values()) 
person.append(def_person1.values()) 
person.append(def_person2.values()) 

for persons in person: 
    print() 

ので、私は、出力がjobrole下の名前とジョブの役割の下のすべての名前と 名前jobroleようになります。

+0

の可能な複製[Pythonでforループを使って辞書を繰り返す]の複製が可能です(http://stackoverflow.com/questions/3294889/iterating-over-辞書の使用のために - パイソンのループ) –

+0

@PadraicCunninghamそれも。 –

答えて

2

実際には、同じキーを持つすべての辞書が同じ順序でキーを表示するとは仮定できません。これは決して保証されません。代わりに、あなたが順番に印刷するキーのリストを持っていて、各キーの値を引っ張って各辞書のこのキーリストを反復処理する必要があります。

私が正しく第1の2次元リストを作成する方法を示しています。

person_keys = list(def_person.keys()) 

# add the heading row 
result = [person_keys] 

for person in [def_person, def_person1, def_person2]: 
    # make a list of current person's values in the 
    # order of keys in person_keys 
    result.append([person[key] for key in person_keys]) 

、Pythonの3で、うまくこのリストを印刷するにはあなたが行うことができます:

for row in result: 
    for cell in row: 
     # print each cell as at least 20 characters wide 
     print('{:20}'.format(cell), end='') 

    # empty line after each row 
    print() 

結果:

JobRole    name     
TESTJOB    TEST1    
TESTJOB1   TEST2    
TESTJOB2   TEST3    

上記のord列の消去は任意である。場合によってはJobRoleが最初に、ときにはnameが最初に表示されます。 nameで固定注文をしたい場合は、person_keys = ['name', 'JobRole']

関連する問題