我刚刚对codecademy进行了一次练习,我很困惑为什么打印命令不只是两次打印密钥?
my_dict = {
"a" : "alpha",
"b" : "bravo",
"c" : "charlie"
}
for key in my_dict:
print key, " ", my_dict[key]
它输出这个,这是正确的,因为目的是打印键和值..
a alpha
c charlie
b bravo
但是我不明白为什么my_dict [key]打印出值而不是键,考虑到它说的是键。 任何解释将不胜感激。 提前谢谢
答案 0 :(得分:4)
这是字典的默认行为,如Python文档中所述。试着把它想象成各种各样的“指数”。所以当你调用my_dict [key]时,你要求你调用的键(或“索引”)的值。如果您想打印密钥,您只需要像在print语句的开头那样直接调用密钥。
答案 1 :(得分:0)
考虑一个清单。要获得列表中的第一个值,我们将
print list_name[0]
0
标识列表中的元素。列表包含由整数索引访问的值。使用字典我们不使用整数索引,而是使用其他一些对象来标识位置。另一个对象通常是一个字符串,如您的示例所示。将对象转换为位置的过程是使用哈希算法完成的,除了它有效之外,你真的不想知道它。
所以,在:
my_dict = {
"a" : "alpha",
"b" : "bravo",
"c" : "charlie"
}
我们有三个值,“alpha”,“bravo”,“charlie”。他们在记忆中的位置是通过使用键“a”,“b”或“c”来确定的。因此my_dict["b"]
使Python能够计算值“bravo”的位置并检索它。
你的循环只是轮流获取每个键并检索值。当你打印key
得到密钥时,当你打印my_dict[key]
时,python会看到[ ]
并调用特殊代码来调用哈希算法并检索值。
顺便说一下,如果你尝试my_dict[value]
那就行不通了。检索只能从键到值工作。这有几个原因,但其中一个原因是字典中的键是唯一的,而值不一定是。另一个是值可以改变,但是密钥不能简单地因为哈希算法会给出不同的结果。