これはおそらく問題の疑問です。任意の辞書の場合、Pythonで 'd'は常にTrueです。Python辞書のキー値の一貫性
dict(zip(d.keys(), d.values())) == d
対応するキーと値は同じですか?
これはおそらく問題の疑問です。任意の辞書の場合、Pythonで 'd'は常にTrueです。Python辞書のキー値の一貫性
dict(zip(d.keys(), d.values())) == d
対応するキーと値は同じですか?
はい、それはいつも真です。 Pythonによって保証されている場合は、ディシジョンに修正を加える必要はありません。
関連仕様:http://docs.python.org/library/stdtypes.html#dict.items
それが同期して行くの辞書から保護し、無視できる余分なメモリを使用して、両方のため、これは、一般的に優れている:
dict((k,v) for k,v in d.iteritems())
あなたがするかどうかを求めている場合キーと値は同じ順序で返されますが、答えはYesです。 documentationは言う:
items()
場合は、keys()
、values()
、iteritems()
、iterkeys()
、およびitervalues()
が辞書に無い介在の変更で呼び出され、リストが直接対応します。
あなたはdict(zip(d.keys(), d.values())) == d
は常にすべての状況下でTrueに評価されるかどうかを求めている場合は、その答えは、あなたが他の1がd.keys()
を実行している間d
を変更する1、d.values()
、またはdict(...)
で、複数のスレッドを持つことができる番号です。これにより、上に引用した条件が無効になる間に変更が加えられます。
はい、これはd.itemsによって返されるキーと値が同じ順序で列挙されている
:-)保証動作である:それはマルチスレッド環境では、http://docs.python.org/library/stdtypes.html#dict.items
注連続してd.keys()
とd.values()
を呼び出す間の突然変異を危険にさらすのではなく、d.items()
を一度にすべて抽出することが最善です。
アンパックは不要ですが、 'dict(d.iteritems())'も同様です。その点に関しては、ほとんどの場合、(dictを含む)特殊ケースのマッピング(一般的にはiterablesよりも)は、とにかく、それは普遍的かどうかはわかりませんが。 – delnan
@delnanがあなたのコメントをアップしましたが、私はこの例に近いと思います。 – Triptych
'd.copy()'がはるかに優れているので、実際には 'dict((k、v)for k、v.d.iteritems())'や 'dict(d.iteritems())' 。 – Gabe