我正在通过阅读“ Python速成课程”这本书来学习python,所以我还是一个初学者,我想知道的是这两段代码之间的区别,因为它们对我来说似乎都是相同的,但是结果不同。
names={
'first' : ['john','mike'],
}
for name in names.keys():
print(name[1])
这将给出结果“ i”。
names={
'first' : ['john','mike'],
}
for name in names.keys():
print(names[name][1])
这给出了我预期的结果; '麦克风'。 任何帮助将不胜感激。
答案 0 :(得分:0)
尝试理解此示例:
>>> names = {'first': ['john', 'mike']}
>>> for key in names.keys():
... print(f'Current key is "{key}"')
... print(f'Second element of "{key}" is "{key[1]}"')
... print(f'Value of key "{key}" is "{names[key]}"')
... print(f'Second element of "{names[key]}" is "{names[key][1]}"')
...
Current key is "first"
Second element of "first" is "i"
Value of key "first" is "['john', 'mike']"
Second element of "['john', 'mike']" is "mike"
答案 1 :(得分:0)
在两种情况下,name
均指names
中的(唯一)键,字符串'first'
。
在第一个循环中,打印'first'[1]
,即'i'
。
在第二个循环中,使用名称从names
获取值; names[name] == ['john', 'mike']
,所以names[name][1]
是['john', 'mike'][1] == 'mike'
。
答案 2 :(得分:0)
names.keys()
将返回names
词典的所有键。因此,唯一的密钥就是:first
。
for name in names.keys()
将一个接一个地浏览键,在这种情况下,它只会观察上面的单个键。
因此... name
在这里存储值"first"
"first"[1]
将返回'i'
,而names['first']
将返回['john','mike']
,因此names['first'][1]
将返回"mike"
(该列表的第二个元素)
答案 3 :(得分:0)
names={
'first' : ['john','mike'],
}
for name in names.keys():
print(name[1])
第一个names
是使用键而不是索引的字典。在此示例中,字典的“键”为first
。让我们看一下字典:
>>> names
{'first': ['john', 'mike']}
我们可以看到有一个键first
,并且该键具有一个list
作为值。该列表有两个项目john
和mike
。
进行for循环时,将迭代字典中的每个项目。具体而言,您要遍历密钥。在此示例中,只有一个键:first
。
可能使您感到困惑的一件事是您正在使用变量name
。为了示例,我们将其更改为i
:
for i in names.keys():
print(i)
这将返回first
,因为那是字典中的唯一键。您可以将i
替换为(几乎)所需的任何变量名。
因此,我们有一个值为first
的str,并且希望该字符串中的第二个字符。请记住,python从0开始,所以[1]
是字符串first
的第二个字符,即i
。
现在,在第二个代码块中,您有names[name][1]]
。请记住,names
字典的值为{'first': ['john', 'mike']}
。再次,让我们将单词name
更改为i
,以查看发生了什么事:
for i in names.keys():
print(names[i][1])
同样,我们唯一的键是first
,所以当for循环迭代时,它将变为i == first
,然后结束。让我们尝试一下:
>>> names['first']
['john', 'mike']
这将返回两个名称的列表。如果我们使用>>> names['first'][1]
来获取列表的第一个值,则会得到mike
。
因此,总而言之,在第一个示例中,您将获取键的一部分,即str,在第二个示例中,您将返回给定键的字典值的第一个元素。
答案 4 :(得分:0)
调用names.keys()
时,该函数将返回一个列表,其中包含字典中的所有键。运行循环时,name
将成为列表的元素,在这种情况下为字符串"first"
。因此,当您调用name[1]
时,与调用"first"[1]
相同,后者将返回字符串的第二个字符:“ i”。
在第二个代码中,调用names[name]
与调用names["first"]
相同,后者返回一个列表(['john','mike']
),然后可以打印列表的第二个元素("mike"
)