Python迭代列表

时间:2016-10-13 11:10:05

标签: python python-3.x

试图弄清楚这个, 我有3个词典,我将它们添加到列表后,但我怎么能循环列表并打印出该列表。

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下的Name和job roles下的所有名称。

1 个答案:

答案 0 :(得分: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               

上面,列的排序是任意的。有时您会先JobRole,有时name先获得name。如果您想首先使用person_keys = ['name', 'JobRole']获得固定订单,请使用{{1}},