函数仅打印字典的最后2个键:值对

2024-06-16 09:20:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个以字典作为参数的函数。字典由一个键(姓氏)和一个值(名字列表)组成

函数应该返回一个新字典,其中每个键都是参数中键的第一个字母,值是参数值中的项数

范例

names = {"Stark": ["Ned", "Robb", "Sansa"], "Snow" : ["Jon"], "Lannister": ["Jaime", "Cersei", "Tywin"]}

{"S" : 3, "S" : 1,  "L": 3}

我编写的函数只打印字典中最后两个键、值对的“{'S':1,'L':3}”,但我希望打印{'S':3,'S':1,'L':3}

def count_first_letter(names):
     beginning = []
     last = []
     for element, number in names.items():
       amount = len(number)
       first = element[0]
       last.append(amount)
       beginning.append(first)
    
     new = {key:value for key, value in zip(beginning, last)}
    
    
     return new
    
    
    
    print(count_first_letter({"Stark": ["Ned", "Robb", "Sansa"], "Snow": ["Jon"], "Lannister": ["Jaime", "Cersei", "Tywin"]}))

'{'S': 1, 'L': 3}'

Tags: 函数参数字典namesfirstlastjonsnow
2条回答

您的字典键被覆盖,因此'S': 3'S': 1覆盖,因为字典不能包含重复的键

要解决您的问题,您需要将它们放在如下列表中:

new = [(key,value) for key, value in zip(beginning, last)]

输出:

[('S', 3), ('S', 1), ('L', 3)] 

因为你的两个姓都以同一个字母开头:斯塔克,斯诺。因此,作为字典键相互覆盖是唯一的

相关问题 更多 >