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
これが機能しない理由がわかりません。よりも大きい値だけでなく、リスト内のすべての値を返します。
デフォルトでは、任意の dict はその値ではなくキーを反復処理します。
>>> 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']
辞書を反復すると、辞書のキーが生成されます。
>>> 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