Diction是包含键和值的字典。我想对字典键进行迭代,在字典键中我将返回一个值小于或等于20的键数组。但是,我仅对一个键进行迭代。如何遍历整个字典键?
def total(diction):
for key in diction:
if diction[key] <= 20:
return [key]
答案 0 :(得分:2)
您的函数在遇到第一个return
语句时完成执行。
您可以像这样调整功能。
def total(diction):
result = []
for key, value in diction.items():
if value <= 20:
result.append(key)
return result
此函数将满足您条件的键添加到列表中,并且仅在查看了dict
中的所有(键,值)对之后才返回该列表。
或者,您可以编写一个生成器函数:
def total_gen(diction):
for key, value in diction.items():
if value <= 20:
yield key
您可以考虑给函数起一个比total
更好的名称,并让它们采用一个附加参数(例如,命名为limit
),以避免对值20
进行硬编码。
演示:
>>> d = {'a': 5, 'b': 100, 'c': 23, 'd': -2}
>>> total(d)
>>> ['d', 'a']
>>> list(total_gen(d))
>>> ['d', 'a']
当然,您也可以使用简洁的列表或生成器表达式:
>>> [key for key, value in d.items() if value <= 20]
>>> ['d', 'a']
>>>
>>> for k in (key for key, value in d.items() if value <= 20):
...: print(k)
...:
d
a
在不需要一次在内存中使用所有键的情况下(例如,如果您只想遍历它们),生成器函数和生成器表达式特别有用。
答案 1 :(得分:1)
您可以使用以下列表理解来遍历字典项:
def total(diction):
return [key for key, value in diction.items() if value <= 20]
答案 2 :(得分:1)
def total(diction):
result = []
for key in diction:
if diction[key] <= 20:
result.append(key)
return result
或使用列表理解
def total(diction):
return [key for key in diction if diction[key] <= 20]
答案 3 :(得分:1)
您需要将密钥保存到列表中,然后在浏览完所有密钥后才返回。
def total(diction):
key_list = []
for key in diction:
if diction[key] <= 20:
key_list.append(key)
return key_list
这也可以通过列表理解来完成:
def total(diction):
return [k for k in diction if diction[k]<=20]
答案 4 :(得分:0)
我不确定我是否正确理解了您的问题。但是您可以使用字典的“ .keys()”属性来获取字典对象的键列表。例如。如果您有一个名为“ diction”的字典对象,则使用diction.keys()会得到一个列表对象,其中键作为列表项。然后,您可以像这样遍历每个键:
对于diction.keys()中的dict_key: diction [dict_key] = ......
希望,它会帮助
答案 5 :(得分:0)
“重复一键”是什么意思?的确,您每次编写时都在遍历所有键-
for key in diction:
如果要单行执行此操作,则可以使用lambda函数来缩短代码-
list(filter(lambda x: dic[x]<=20, dic.keys()))
尽管如此,即使在这里,您一次也只能检查一次按键。那是迭代!