我需要提取一个特定值的级别:这是我的out_dict:
out_dict={'198': 2, '223': 5, '102': 7, '197': 6, '183': 9, '184': 3, '248': 1, '255': 8, '179': 10, '241': 4}这是我的KeyBestByte
Key[BestByte]= 198这是我的密码:
print (out_dict)
for k in out_dict.values():
if out_dict[k] == Key[BestByte]:
print (k)它给了我一个错误:KeyError: 4
发布于 2017-10-09 11:03:11
你用的是值而不是钥匙。在钥匙上循环一下。并转换为整数以进行比较:
for k in out_dict: # same as out_dict.keys(), even slightly better
if int(k) == Key[BestByte]:但是,在字典的键上循环来测试某物是一种死而复生的赠品,因为有些东西可以改进:
在那种情况下你不能用这个破权力。最好这样做:
if str(Key[BestByte]) in out_dict:避免了循环和线性搜索。现在您正在使用字典查找的速度要快得多。
在这种情况下,现在要获得值:
if str(Key[BestByte]) in out_dict:
value = out_dict[str(Key[BestByte])]或者只是:
value = out_dict.get(str(Key[BestByte])并测试value is not None,以防密钥丢失。
发布于 2017-10-09 11:19:32
首先,您的缩进似乎有点不合适,for中的所有内容都应该与上面的print语句位于相同的缩进位置。
至于您的问题,for k in out_dict.values()将给出您的out_dict中的实际值(即2、5、7、6等)。而不是字典的key。因此,if逻辑将无法工作,因为k不是out_dict的关键,而是生成KeyError。有几种方法可以解决这个问题,包括:
for key, value in out_dict.items():
if value == Key[BestByte]
print(key)https://stackoverflow.com/questions/46644882
复制相似问题