我的代码解决了下面的问题,但是有人能帮助我理解这一点吗?为什么我的代码只访问密钥而不是值?这是一个一贯的问题,我已经了解字典-刚刚开始研究他们这个星期。我希望要么会出现错误,要么会出现一些混乱的国家和数字。
您能解释一下我如何编写代码来将密钥单独添加到新列表中吗?
创建字典黄金中国家的列表,并将该列表分配给变量名称国家。不要硬编码这个.
golds = {"Italy": 12, "USA": 33, "Brazil": 15, "China": 27, "Spain": 19, "Canada": 22, "Argentina": 8, "England": 29}
countries = []
accum = 0
for item in golds:
countries.append(item)
发布于 2020-05-12 08:04:05
要遍历所做的键,请执行以下操作:
for k in golds.keys():
关于价值:
for v in golds.values():
对两人而言:
for k, v in golds.items():
Python创建者在执行for item in golds
时必须选择上述其中之一作为默认体验。他们决定了第一个。
但是为什么呢?
正如Sven和Amitai所指出的,使迭代键的默认行为与执行key in my_dict
的能力是一致的。我越想它,value in my_dict
就会是个坏主意。
而且,我认为Python想要与当时许多其他语言处理这种情况的方式保持一致,所以这就提出了一个问题,哪种主要语言是第一个遍历字典的语言?我试着做了一些研究来找出这一点,但我找不出哪种语言是第一个做出这个选择的:
发布于 2020-05-12 08:11:37
当迭代字典时,您将只在键上进行迭代。你的代码:
for item in golds:
countries.append(item)
就是这样。
一个简单得多的方法是:
countries = list(golds)
因为list
构造函数在序列上迭代,在dict
的情况下,这意味着它的键。虽然上面的工作,它是有点模糊。一个更好的选择是:
countries = list(golds.keys())
keys
方法返回所有字典键的序列(Python3中的迭代器,仅仅是Python2中的一个列表)。这比以前的方法更好(IMHO),因为它清楚地说明了代码的意图,使其更具可读性。
发布于 2020-05-12 08:21:27
欢迎来到Python中令人惊奇的字典世界:)一开始事情可能会有点混乱,但别担心,没关系。
关于您的问题:当您在字典中迭代时,它只返回当前项的键(这就是您的代码工作的原因)。如果您想访问其他数据,有几种方法可以帮助您:
dict.values()
或dict.keys()
这些方法将从dict返回值或键的列表,如下所示:
golds = {"Italy": 12, "USA": 33, "Brazil": 15, "China": 27, "Spain": 19, "Canada": 22, "Argentina": 8, "England": 29}
countries = []
accum = 0
# Using .keys() (default behavior)
for item in golds.keys():
countries.append(item)
# countries -> ["Italy", "USA", "Brazil", "China", "Spain", "Canada", "Argentina", "England"]
# Using .values()
for item in golds.values():
countries.append(item)
# countries -> [12, 33, 15, 27, 19, 22, 8, 29]
dict.items()
此方法将返回包含当前项的键和值的元组列表,在大多数情况下都非常有用。要使用它,您必须以不同的方式使用您的for
:
# DISCLAIMER: key and value are just variable names, you can name them however you want
for key, value in golds.items():
# key -> 'Italy'
# value -> 12
...
希望这能帮上忙!
https://stackoverflow.com/questions/61756232
复制相似问题