def basketball_player(first, last, **player_info):
player = {}
player['first name'] = first
player['last name'] = last
for key, value in player_info.items():
player[key] = value
return player
player_profile = basketball_player('lebron', 'james',
team = 'cavaliers',
number = '23')
print(player_profile)
我理解其他所有内容,我只是不明白你为什么要分配值来玩[key]
答案 0 :(得分:0)
我认为您的答案的关键是了解并了解**player_info
正在做什么以及.items()
方法正在做什么。
**
扩展运算符(您可能已经知道)允许您将任意数量的关键字参数传递给方法。所以,基本上,当你这样做时:
player_profile = basketball_player('lebron', 'james',
team = 'cavaliers',
number = '23')
您已为变量分配了以下值:
first = 'lebron'
last = 'james'
player_info = {'team': 'cavaliers', 'number': '23'}
player_info
是dict
。
在python中的任何dict
上,您可以调用items()
方法将其转换为[(<KEY>, <VALUE>)]
形式的元组列表。
因此,在您的实例中,player_info.items()
变为:
[('team', 'cavaliers'), ('number', '23')]
当你执行for
循环时,它循环遍历元组列表。并且,对于每个元组,它将[0]
分配给key
变量,将[1]
分配给value
。
因此,当您在player[key]
列表的第一次迭代中调用player_info.items()
时,key
与player_info.items()[0]
相同或者...... {在这种情况下'team'
1 test fixed(5,2),
2 another_test char(12),
2 a_third_test,
3 one pic'9{9}V.99',
3 two pic'9,999V.99',
3 three fixed(7,2),
/* test,t*/
/*test 2,*/
/*and more */
2 another_field fixed bin(13),
2 a_really_long_super_long_field_name_requiring_two_lines_for_declaration
char(1),
2 a_field char(8);
1}}。