如何在Python中打印出对应于相同值的多个键?

如何在Python中打印出对应于相同值的多个键?,python,dictionary,for-loop,key,mapping,Python,Dictionary,For Loop,Key,Mapping,我正在尝试用Python编写一个代码,用户在其中输入他们朋友的名字和朋友最喜欢的颜色到字典中。然后,程序将获取这些键和值,并首先打印颜色(值),然后打印映射到该值的每个朋友(键) 但是,我很难在同一行上打印出多个值作为它们的共享键 以下是我目前的代码: 颜色匹配={} 尽管如此: key=input('键入名称:') 如果键==“0”: 打破 value=input('输入您朋友最喜欢的颜色:') 如果不是(键和值): 打破 颜色匹配[键]=值 打印(颜色匹配) 打印(颜色匹配[键]+“:”,

我正在尝试用Python编写一个代码,用户在其中输入他们朋友的名字和朋友最喜欢的颜色到字典中。然后,程序将获取这些键和值,并首先打印颜色(值),然后打印映射到该值的每个朋友(键)

但是,我很难在同一行上打印出多个值作为它们的共享键

以下是我目前的代码:


颜色匹配={}
尽管如此:
key=input('键入名称:')
如果键==“0”:
打破
value=input('输入您朋友最喜欢的颜色:')
如果不是(键和值):
打破
颜色匹配[键]=值
打印(颜色匹配)
打印(颜色匹配[键]+“:”,键)
假设我的输入是{'Eric':蓝色,'Tom':红色,'Bob':蓝色}。结果如下:

blue: Eric
red: Tom
blue: Bob

有人能帮忙吗?在本例中,我需要Bob和Eric位于与blue对应的同一行上

看起来,用另一种方式构建字典更有意义,键是每种颜色,值由选择该颜色的朋友列表组成

可以这样做:

from collections import defaultdict

color_match = defaultdict(list)
while True:
    value = input('Enter the name of your friend: ')
    if value == '0':
        break
    key = input('Enter your friend\'s favorite color: ')
    if not (key and value):
        break
    color_match[key].append(value)

print(color_match)

for key in color_match:
        print(f"{key}: {color_match[key]}")
使用您的示例,上面的内容将打印出来:

Blue: ['Eric', 'Bob']
Red: ['Tom']
使用默认值为“list”类型而不是常规字典的defaultdict,即使指定的键还不存在,我们也可以附加列表值

如果希望打印的结果只是每个名称之间用逗号分隔,则只需对最后几行稍加修改即可:

for key in color_match:
    array_string = ", ".join(color_match[key])
    print(f"{key}: {array_string}")

需要记住的一点是,“Red”和“Red”将导致两个不同的字典键,因为它们不是相同的字符串。为了防止出现这种情况,可能需要添加以下行:

value = value[0].upper() + value[1:].lower()
“if value='0':
块之后

这将确保“蓝色”、“蓝色”、“蓝色”或任何其他变体将被捕获为“蓝色”。

使用此选项:

color_match={}
尽管如此:
nm=input('输入您朋友的姓名:')
如果nm==“0”:
打破
color=input('输入您朋友最喜欢的颜色:')
如果不是(纳米和颜色):
打破
如果color.lower()不在color\u match.keys()中:color\u match[color.lower()]=nm
else:color_match[color.lower()]+=(f“,{nm}”)
打印(颜色匹配)
对于输入颜色匹配:
打印(键+“:”,颜色匹配[键])
输出:

Enter the name of your friend: bob
Enter your friend's favorite color: blue
Enter the name of your friend: rob
Enter your friend's favorite color: BLuE
Enter the name of your friend: tom
Enter your friend's favorite color: green
Enter the name of your friend: 
Enter your friend's favorite color: 
{'blue': 'bob, rob', 'green': 'tom'}
blue: bob, rob
green: tom
>>> 

你想把
color\u match[“blue”]
变成一个列表还是字符串?如果可能的话,我想把它变成一个字符串谢谢你!这太完美了。我不知道你能那样用=+了!我也不熟悉.key