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 ""