用py编写程序,给定一组姓名及其爱好的运动,请按运动爱好汇总爱好相同的人。
时间: 2024-05-05 07:15:04 浏览: 89
以下是一个可能的解决方案:
```
data = {
"Alice": ["swimming", "hiking", "yoga"],
"Bob": ["hiking", "cycling"],
"Charlie": ["swimming", "yoga"],
"Dave": ["cycling", "running", "hiking"],
"Eve": ["swimming", "running"]
}
hobby_dict = {}
for name, hobbies in data.items():
for hobby in hobbies:
if hobby in hobby_dict:
hobby_dict[hobby].append(name)
else:
hobby_dict[hobby] = [name]
for hobby, names in hobby_dict.items():
print(f"\"{hobby}\": {names}")
```
运行结果如下:
```
"swimming": ['Alice', 'Charlie', 'Eve']
"hiking": ['Alice', 'Bob', 'Dave']
"yoga": ['Alice', 'Charlie']
"cycling": ['Bob', 'Dave']
"running": ['Dave', 'Eve']
```
解释一下代码:
首先,我们定义了一个包含姓名和运动爱好的字典 `data`。然后,我们创建一个空的字典 `hobby_dict`,用于存储按运动爱好汇总的结果。
接着,我们使用两个嵌套的循环遍历 `data` 中的每个姓名和其对应的运动爱好。对于每个运动爱好,我们检查它是否已经出现在 `hobby_dict` 中。如果是,我们将当前的姓名添加到该运动爱好的列表中;否则,我们新建一个包含当前姓名的列表,并将其作为该运动爱好的值添加到 `hobby_dict` 中。
最后,我们遍历 `hobby_dict` 中的每个运动爱好及其对应的姓名列表,并输出结果。
阅读全文