这段代码来自我正在研究的一本蟒蛇书,本章正在讨论词典。
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
friends = ['phil','sarah']
for name in favorite_languages.keys():
print(name.title())
if name in friends:
print(" hi " +name.title() +
", i see your favorite language is " +
favorite_languages[name].title() + "!")
The result is:
Jen
Ed
Phil
hi Phil, i see your favorite language is Python!
hi Sarah, i see your favorite language is C!
我无法理解代码相对于变量“name”的逻辑以及值变化的原因。意思是,变量“name”由“for”循环创建,所有Dictionary键都存储在其中,因此当“if”语句开始时,“name”的值是所有键。
我对“if”语句的理解是它只返回一个布尔值true或false,在本例中为true。但是为什么“name”的值(作为这个“if”语句的结果)在这一点上变为“friends”的值?
它只是Python内置的规则吗?因为它在逻辑上并不遵循,除非我遗漏了一些东西。
写它会更有意义:
if friends in name:
print(" hi " friends.title() +
答案 0 :(得分:1)
“......变量”name“由”for“循环创建,所有Dictionary键都存储在其中,”
我认为这是你的错误观念。行for name in favorite_languages.keys():
不会将所有键存储在变量name
中。这意味着,对于密钥中的每个条目,一次一个地执行以下代码(“套件”),每次将变量name
设置为不同的条目。
因此,如果favorite_languages.keys()
为['jen', 'sarah', 'edward', 'phil']
,请执行该套件四次:将name
设置为“jen”;一旦它设置为'sarah',一旦设置为'edward',一次设置为'phil'。
答案 1 :(得分:0)
name
,键是:
之前的字符串。字典
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
friends = ['phil','sarah']
for name in favorite_languages.keys():
print(name.title())
if name in friends:
print(" hi " +name.title() +
", i see your favorite language is " +
favorite_languages[name].title() + "!")
所以for循环遍历字典中的任何键并使用title()
方法打印其值
另外if
- 语句确定列表friends
中是否存在键(= name),如果是,则执行链接代码,如果为false,则不执行
确切的输出是
Sarah
hi Sarah, i see your favorite language is C!
Edward
Jen
Phil
hi Phil, i see your favorite language is Python!
for循环greps键'Sarah',if-statement检查它是否在列表中的朋友:是的,所以打印
for循环greps键'Edward',if-statement检查它是否在列表中的朋友:是false所以没有打印
for循环greps键'Jen',if-statement检查它是否在列表中的朋友:是false所以没有打印
for循环greps键'Phil',if-statement检查它是否在列表中的朋友:是的,所以打印
在字典中,使用[key].title()
访问与密钥关联的值,在本例中为[name].title()
,因为name
用作密钥的标识符