2 回答

TA贡献1757条经验 获得超7个赞
使用join和map:
dict = {
'name1': ['python', 'c', 'java'],
'name2': ['c.'],
'name3': ['ruby', 'go'],
'name4': ['javascript', 'python'],
'name5': [],
}
for k, v in dict.items():
if len(v) == 1:
print(str(k).title() + "'s favorite language is " + ', '.join(map(str.title, v)) + "\n")
elif len(v) > 1:
print(str(k).title() + "'s favorite languages are: \n" + ', '.join(map(str.title, v)) + "\n")
elif len(v) < 1 :
print(str(k).title() + " does not have a favorite language")
输出
Name3's favorite languages are:
Ruby, Go
Name5 does not have a favorite language
Name2's favorite language is C.
Name4's favorite languages are:
Javascript, Python
Name1's favorite languages are:
Python, C, Java
这个想法是应用于str.title值列表中的每个字符串(使用 map),然后通过逗号和空格 ( ', ')连接这些字符串。请注意,您可以更改联接的字符串以满足您的需要。

TA贡献1843条经验 获得超7个赞
虽然 Daniel 的回答更加优雅和完整,但我想解决您的问题,即为什么 'for' 函数没有拆分语言名称(删除“,”和“]”)。代码中的第一个“for”函数遍历字典。如果您只想使用“for”函数,则需要为每个人的条目再次重用它以分隔语言。喜欢下面的代码示例。
dict = {
'name1': ['python', 'c', 'java'],
'name2': ['c.'],
'name3': ['ruby', 'go'],
'name4': ['javascript', 'python'],
'name5': [],
}
for k, v in dict.items():
if len(v) == 1:
print(str(k).title() + "'s favorite language is " + str(v).title() + "\n")
elif len(v) > 1:
print(str(k).title() + "'s favorite languages are:")
for language in v:
print(language + ", ")
print("")
elif len(v) < 1 :
print(str(k).title() + " does not have a favorite language")
添加回答
举报