Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字典的列表中打印单独的元素_Python_List_Dictionary_Printf_Elements - Fatal编程技术网

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

Python 在字典的列表中打印单独的元素,python,list,dictionary,printf,elements,Python,List,Dictionary,Printf,Elements,我在尝试打印字典中列表中的每个元素以及字典中的其他项时遇到问题 #dictionaries bill = { "name": "Bill", "job": "Policeman", "hobbies": ["rugby","music","mischief"], } jill = { "name": "Jill", "job": "Lawyer", "hobbies": ["driving","clubbing","basketball"], }

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

#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

通过谷歌搜索这个问题并在这个网站上搜索,我可以找到解决这个问题的解决方案,但如果字典中有其他项目不是列表,则无法找到解决方案。

只需分别循环浏览兴趣爱好键:

#print keys with their values for each citizen
def citizen_info(citizens):
    for citizen in citizens:
        for item in citizen:
            if item != "hobbies":
                print(("%s: " + str(citizen[item])) % (item))
            else:
                print("hobbies", end="")
                for hobby in citizen[item]:
                    print(hobby, end="")
                print("")
    print("")

如果值的类型为
list
,则可以简单地使用三元条件生成由空格连接的字符串,否则将生成简单字符串

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

如果您有一个列表a=['1','2','3'],并且希望将其中的字符串连接起来:

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

看看这是否适合您:

def citizen_info(citizens):
  for citizen in citizens:  # loop through the citizens
    for key, value in citizen.items():  # get keys and values
      if type(value) is list:  # test if the value is a list
        value = " ".join(value)  # join the list into a string
      print("{}: {}".format(key, value))  # print however you want

使用新样式的字符串格式,并以不同的方式处理
cabiods
键。

您混合了Python2(其中
print
是一条语句,是一个关键字)和Python3(其中
print
是一个函数)中的
print
用法。请根据任何一个版本调整您的答案(Python 2将是最佳答案,因为问题中使用了Python 2)。几乎没有其他问题需要解决(特别是第一个
print
,它仍然是一个语句),因此我为您解决了这些问题。是的,我非常喜欢第一个答案,因为它对于在字典中添加未来的条目非常有用,当然,它是有效的。干杯使用
issinstance
not type
" ".join(a)
", ".join(a)
def citizen_info(citizens):
  for citizen in citizens:  # loop through the citizens
    for key, value in citizen.items():  # get keys and values
      if type(value) is list:  # test if the value is a list
        value = " ".join(value)  # join the list into a string
      print("{}: {}".format(key, value))  # print however you want
def citizen_info(citizens):
    for citizen in citizens:
        for item in citizen:
            if item != 'hobbies':
                print ('{}: {}'.format(item, citizen[item])  # new style string formatting, much easier to read imo
            else:
                print ('{}: {}'.format(item, ' '.join(citizen[item]))
        print ""