生成代码 Python编写程序,按姓名顺序显示所有诗人的姓名,同一个姓氏的诗人显示在一行,并统计诗人个数
时间: 2024-02-17 10:05:34 浏览: 49
以下是 Python 代码示例:
```python
poets = [
"李白", "李清照", "苏轼", "苏洵", "辛弃翁", "辛丑",
"王安石", "王之涣", "白居易", "白朴", "杜甫", "杜牧"
]
poet_dict = {}
for poet in poets:
surname = poet[0]
if surname not in poet_dict:
poet_dict[surname] = []
poet_dict[surname].append(poet)
for surname, poets in poet_dict.items():
print(surname + "姓诗人有:")
for poet in poets:
print(poet)
print("共计" + str(len(poets)) + "人\n")
```
输出结果如下:
```
李姓诗人有:
李白
李清照
共计2人
苏姓诗人有:
苏轼
苏洵
共计2人
辛姓诗人有:
辛弃翁
辛丑
共计2人
王姓诗人有:
王安石
王之涣
共计2人
白姓诗人有:
白居易
白朴
共计2人
杜姓诗人有:
杜甫
杜牧
共计2人
```
以上代码中,首先定义了一个包含所有诗人姓名的列表 `poets`。接着,创建一个空字典 `poet_dict`,用于存储每个姓氏对应的诗人列表。
然后,遍历所有诗人姓名,对于每个诗人,获取其姓氏并检查 `poet_dict` 中是否已经存在该姓氏的键。如果不存在,则创建一个新键,并将其值设为一个空列表;如果已经存在,则直接访问该键对应的列表。
接下来,将当前诗人姓名添加到对应的列表中。
最后,遍历 `poet_dict` 中的每个键值对,输出姓氏、该姓氏对应的所有诗人姓名,以及该姓氏对应的诗人个数。