これは、Python 2ではPythonの2と3
間の重大な変更のいずれかです。
のPython 3では
>>> help(dict.keys)
keys(...)
D.keys() -> list of D's keys
:
>>> help(dict.keys)
keys(...)
D.keys() -> a set-like object providing a view on D's keys
この動作の変更は、多くのことを作りますdictは意味的に順序付けされておらず、そのキーはセットと同じようにユニークです。
この変更は、dictのキーとの何らかの種類の比較を実行するたびに、新しいキーのリストを作成する必要がないことを意味します。
のPython 3への移行を支援するために2と3
で同じ動作を取得、Pythonの2.7は、他のdictメソッド、viewkeys
を持っています。viewkeys
方法は、Python 3のdict.keys
方法に最も類似している:Pythonの3では
>>> d
{'a': None, 'c': None, 'b': None, 'd': None}
>>> for k in d.viewkeys(): print k
...
a
c
b
d
>>> d.viewkeys() & set('abc')
set(['a', 'c', 'b'])
、以前の動作に最も近いアナログはlist
にdict.keys()
を渡すことです:
>>> d
{'d': None, 'a': None, 'c': None, 'b': None}
>>> list(d.keys())
['d', 'a', 'c', 'b']
それともに辞書を渡しますlist
と入力します.Dictはそのキーを繰り返し実行します:
>>> list(d)
['d', 'a', 'c', 'b']
if hasattr(dict, 'viewkeys'): # Python 2.7
def keys(d):
return d.viewkeys()
else: # Python 3
def keys(d):
return d.keys()
とリストフォームを取得するためにlist
に辞書を渡すと、2と3の両方で、同じ出力を得るでしょう:2と3の上に抽象的行動にユーティリティ機能をeate
をあなたは単にあなたが直接、次のように行うことができます辞書からキーのリストたい場合
>>> d
{'b': None, 'a': None, 'c': None, 'd': None}
>>> keys(d)
dict_keys(['b', 'a', 'c', 'd'])
>>> list(d)
['b', 'a', 'c', 'd']
輸入ランダム:[**辞書・ビュー・オブジェクトは、**](HTTP://docs.python。 org/py3k/library/stdtypes.html#dictionary-view-objects)を参照してください。 –
辞書には順序がないので、b.keys()[0]は一般的にはあまり役に立ちません。 –