学习Python艰难的练习39

时间:2015-11-06 06:45:08

标签: python

虽然我想知道Zed使用“州”和“缩写”,但这个练习大部分都在沉沦。 “state”(假设这不是拼写错误),是“状态”的单数版本,但是python是否理解为这个? “state”没有字典,只有“states”字典。在下面的代码的第二位之前,也没有提到“abbrev”,那么python如何知道“abbrev”是什么? Python不知道我们是缩写州名,只是我们将两个大写字母与州名相关联。

# create a mapping of state to abbreviation

states = {
    'Oregon': 'OR',
    'Florida': 'FL',
    'California': 'CA',
    'New York': 'NY',
    'Michigan': 'MI'
}

# print every state abbreviation

print '-' * 25
for state, abbrev in states.items():
    print "%s is abbreviated %s" % (state, abbrev)

5 个答案:

答案 0 :(得分:1)

Python不知道或推断变量名称中的任何内容。它只知道你有一个任意字符串的字典碰巧映射到其他任意字符串。

循环只是说"拔出字典中的键值对"并将键存储在第一个变量中,将值存储在第二个变量中。

您可以按如下方式更改程序,看它仍然有效。

# create a mapping of state to abbreviation

monkeys = {
    'Oregon': 'OR',
    'Florida': 'FL',
    'California': 'CA',
    'New York': 'NY',
    'Michigan': 'MI'
}

# print every state abbreviation

print '-' * 25
for cat, dog in monkeys.items():
    print "%s is abbreviated %s" % (cat, dog)

答案 1 :(得分:0)

Python并没有看到"形态学"部分代码。它没有转换"意思" (复数/单数)

您还可以将第二部分写为:

for x, y in states.items():
    print "%s is abbreviated %s" % (x, y)

Python正在寻找的是(x,y)..的组,其中x是字典中的第一项(键),y是字典中的第二项(值)。

for循环的作用是遍历(x,y)对,每对被认为是" item"就像向量states[1]中的单个项目一样。

答案 2 :(得分:0)

states.items()返回一个键值对数据。 state和abbrev是for语句中的变量名。如果您愿意,可以将州和缩写命名为其他任何内容。

答案 3 :(得分:0)

Click 字典有:

  • state_name (这是关键)#Oregon,Florida,California,New York,Michigan
  • state_two_letter_code (这是值)#OR,FL,CA,NY,MI

因此 states 循环:

  • 州,缩写应理解为 state_name state_two_letter_code

每次循环:

  • 缩写将从字典中为每个项目分配这些值

你可以放任何你想要的名字。由于 for 会返回 states.items() 元组,该元组将分配给您放入的变量名称:

(key, value)

这是一个很好的例子:

for key, value in states.items():
    print "State name: {}".format(key)
    print "State Two Letter Code: {}".format(value)

输出:

def splitEmail(email):
    return email.split('@') # this returns: ['someone', 'gmail.com']

# 'someone' is assigned to 'account' and 'gmail.com' is assigned to domain
account, domain = splitEmail('someone@gmail.com') 

print account
print domain

答案 4 :(得分:0)

states.items()返回一个元组列表,其中包含字典中条目的键和值。 for只是在不同的变量中“解包”每个元组。 python中的元组表示看起来像(1, 2)

我所做的这个互动式ipython会议可能会帮助您理解逻辑。

In [2]: states.items()
Out[2]: 
[('California', 'CA'),
 ('Michigan', 'MI'),
 ('New York', 'NY'),
 ('Florida', 'FL'),
 ('Oregon', 'OR')]

In [3]: states.items()[0]
Out[3]: ('California', 'CA')

In [4]: a, b = states.items()[0]    
In [5]: print a, b
California CA

In [6]: for a, b in [(1, 1), (2, 2)]:
   ...:     print a, b
   ...:     
1 1
2 2