我試圖返回字典中的所有值都大於int結構的值。對字典進行迭代
def big_keys(dict, int):
count = []
for u in dict:
if u > int:
count.append(u)
return count
我不明白爲什麼這不起作用。它返回列表中的每個值,而不僅僅是那些大於英寸的值。
我試圖返回字典中的所有值都大於int結構的值。對字典進行迭代
def big_keys(dict, int):
count = []
for u in dict:
if u > int:
count.append(u)
return count
我不明白爲什麼這不起作用。它返回列表中的每個值,而不僅僅是那些大於英寸的值。
迭代字典會爲字典生成鍵。
>>> d = {'key1': 'value1', 'key2': 'value2'}
>>> for x in d:
... print(x)
...
key2
key1
要獲取值,使用dict.values()
:
>>> for x in d.values():
... print(x)
...
value2
value1
所以,你的程序應該讀作如下:
def big_keys(dict, int):
count = []
for u in dict.values():
if u > int:
count.append(u)
return count
默認情況下,任何字典會遍歷它的鑰匙,而不是它的值:
>>> d = {'a': 1, 'b': 2}
>>> for i in d:
... print i
...
a
b
遍歷值,使用.values()
:
>>> for i in d.values():
... print i
...
1
2
考慮到這一點,你的方法可以簡化爲:
def big_keys(d, i):
return [x for x in d.values() if x > i]
我已經改變了你的變量名,因爲dict
和int
都內置插件。
您的方法實際上是重新創建Python中提供的默認功能。該filter
方法做什麼你正在嘗試做的:
>>> d = {'a': 1, 'b': 6, 'd': 7, 'e': 0}
>>> filter(lambda x: x > 5, d.values())
[6, 7]
從您的評論似乎你正在尋找的鍵而不是值。這裏是你會怎麼做:
>>> d = {'a': 21, 'c': 4, 'b': 5, 'e': 30, 'd': 6, 'g': 4, 'f': 2, 'h': 20}
>>> result = []
>>> for k,v in d.iteritems():
... if v > 20:
... result.append(k)
...
>>> result
['a', 'e']
或者更短的方式:
>>> [k for k,v in d.iteritems() if v > 20]
['a', 'e']
謝謝。這一切都對我有意義,但是當我爲給定的字典運行這個時,請說{'a':21,'c':4,'b':5,'e':30,'d':6,'g ':4,'f':2,'h':20} ,整數參數爲20我得到['a','b','c','d','e',' f','g','h']。當我期望的是['a','e']。這就是我想要了解的。 – SunshineTS
不要覆蓋諸如'int','dict','str','list'內置變量。 .. – Kabie