python-在字典的列表中打印单独的元素

提问

我在尝试打印字典列表中的每个元素以及字典中的其他项目时遇到问题.

#dictionaries
bill = {
    "name": "Bill",
    "job": "Policeman",
    "hobbies": ["rugby","music","mischief"],
}
jill = {
    "name": "Jill",
    "job": "Lawyer",
    "hobbies": ["driving","clubbing","basketball"],
}
will = {
    "name": "Will",
    "job": "Builder",
    "hobbies": ["football","cooking","beatboxing"],
}

#list of citizens
citizens = [bill,jill,will]

#print keys with their values for each citizen
def citizen_info(citizens):
    for citizen in citizens:
        for item in citizen:
            print ("%s: " + str(citizen[item])) % (item)
        print ""

#Calling citizen_info
citizen_info(citizens)

如您所见,我试图打印每个词典中的所有项目,但是当我尝试打印列表中的单独元素时,它看起来像这样.

job: Policeman

name: Bill

hobbies: ['rugby', 'music', 'mischief']

job: Lawyer

name: Jill

hobbies: ['driving', 'clubbing', 'basketball']

job: Builder

name: Will

hobbies: ['football', 'cooking', 'beatboxing'] 

当我实际爱好看起来像这样时:

hobbies: rugby music mischief

搜索完此问题并在该站点上进行搜索后,我可以找到解决该问题的解决方案,但是如果词典中还有另一个不是列表的项目,则无法解决.

最佳答案

def citizen_info(citizens):
    for citizen in citizens:
        for item in citizen:
            if type(citizen[item]) is list :
                print ("%s: " + " ".join(citizen[item])) % (item)
            else :
                print ("%s: " + str(citizen[item])) % (item)
        print ""

要么

def citizen_info2(citizens):
    for citizen in citizens:
        for item in citizen:
            if item == "hobbies" :
                print ("%s: " + " ".join(citizen[item])) % (item)
            else :
                print ("%s: " + str(citizen[item])) % (item)
        print ""

如果您有一个列表a = [‘1′,’2′,’3’]并想在其中加入字符串:

" ".join(a)
", ".join(a)