def big(dict, n):
line = []
for k in dict:
if k > n:
line.append(k)
return line
我必须找到大于n的字典中的所有元素。Python:字典的元素
但是,我的代码只返回大于n的字典中最大的数字。
为了使其正确,我需要做些什么?
def big(dict, n):
line = []
for k in dict:
if k > n:
line.append(k)
return line
我必须找到大于n的字典中的所有元素。Python:字典的元素
但是,我的代码只返回大于n的字典中最大的数字。
为了使其正确,我需要做些什么?
的return line
被标签太远了,所以它返回时第一关键比n
大发现(注:字典是不是你写的方式订购),而不是去在返回之前在所有密钥上。尝试:
def big(dic, n):
line = []
for k in dic:
if k > n:
line.append(k)
return line
实际上,您可能更喜欢它使用列表理解(并且函数变成只是一行)。
def big(dic, n):
return [k for k in dic if k>n]
。
键值对的字典组合,{key: value}
当我们迭代字典时,我们正在迭代它的键。这解释了使用变量k
来遍历键。也就是说,
[k for k in dic] = [key1, key2, ...]
因此,如果你想找到在词典中的最大值,你可以使用:
return [dic[k] for k in dic if dic[k]>n]
注:我已经改变了变量名称(因为@AndrewJaffe提到)dict
是一个内置对象,在这里重命名可能会导致意想不到的事情发生,并且通常被认为是不好的做法。例如,如果您想检查type(dic)==dict
。
将return语句向后移动两个选项卡,否则将返回大于n的第一个值。
def big(dic, n):
line = []
for k in dic:
if dic[k]> n: #compare value instead of key
line.append(k) #use k if you're appending key else dic[k] for val
return line
输出:
>>> print big({'a':10,'b':15, 'c':12},11)
['c']
天真遍历一本字典给你键的序列。不是值。
所以,做你想做什么,你需要itervalues:
for k in d.itervalues(): ### call it "d" rather than "dict"
if k>n:
line.append(k)
或者,正如其他人所指出的那样,使用列表理解。
此外,请勿使用dict
作为名称,因为它会影响内建。
你的字典是什么样的? '对于dict'中的k循环*键*。 (另外,不要使用“dict”作为名字,因为它会影响'builtin'' dict'。 –
你正在尝试检查python字典你有密钥和价值,你正在尝试与键或值进行比较? – user1614526
我的字典看起来像{'a':10,'b':15,'c':12} – Kevvv