我在做一道需要接收选手姓名和成绩,并按照成绩进行排名的题目时遇到了这样的问题:
我将选手姓名和成绩导入了一个字典,由于不知道字典如何排序,我想通过提取字典的值成列表之后对这个列表进行排序,再根据排好序的列表查找字典的键的方法导出排名。
这是我的代码:
def find_key(input_dict,a):
return next((k for k,v in input_dict.items()if v==a),None)
l1 = [input("输入选手姓名,以空格分隔").split(" ")]#接收姓名
#print (l1)
name = tuple(item for item in l1)
#print(name,type(name))
dic = dict.fromkeys(name)
for i in name:
print ("输入选手",i,"的票数")
dic[i] = eval(input())#接收票数
l2 = dic.values()
marklist = l2.sort()
print("排名依次为")
for a in marklist:
find_key(dic,a)
print ("选手的票数为",a)
这是我的报错:
File "C:/", line 7, in
dic = dict.fromkeys(name)
TypeError: unhashable type: 'list'
所以我对name的类型进行了验证,结果如下(验证部分的代码在#注释掉的那里):
输入选手姓名,以空格分隔张三 李四 王五
[['张三', '李四', '王五']]
(['张三', '李四', '王五'],) <class 'tuple'>
明明是元组,但是没法作为键使用,我注意到在
(['张三', '李四', '王五'],) <class 'tuple'>
处出现了元组不该有的[],我猜这可能是原因,但是我不知道怎么改
感谢大家指点!
元组没法作为字典的键?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
悬赏问题
- ¥15 孟德尔随机化怎样画共定位分析图
- ¥18 模拟电路问题解答有偿
- ¥15 Matlab在app上输入带有矩阵形式的初始条件发生错误
- ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
- ¥15 误删注册表文件致win10无法开启
- ¥15 请问在阿里云服务器中怎么利用数据库制作网站
- ¥60 ESP32怎么烧录自启动程序
- ¥50 html2canvas超出滚动条不显示
- ¥15 java业务性能问题求解(sql,业务设计相关)
- ¥15 52810 尾椎c三个a 写蓝牙地址