为什么这个打印命令不会导致键被打印两次?

时间:2017-06-12 18:08:58

标签: python

我刚刚对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]打印出值而不是键,考虑到它说的是键。 任何解释将不胜感激。 提前谢谢

2 个答案:

答案 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]那就行不通了。检索只能从键到值工作。这有几个原因,但其中一个原因是字典中的键是唯一的,而值不一定是。另一个是值可以改变,但是密钥不能简单地因为哈希算法会给出不同的结果。