私はpythonが初めてで、辞書について読んでいました。JavaScriptのような言語の以前の経験から、オブジェクトは私にはオブジェクトのように見えました。辞書はリストを保存し、 。
ex python code:
menu = {}
menu['Chicken Alfredo'] = 14.50
menu['Italian Pasta'] = 15.89
menu['Shrimp Soup'] = 12.43
menu['Persian Rice'] = 21.99
ex javascriptコード:
var menu = new Object();
menu['Chicken Alfredo'] = 14.50;
menu['Italian Pasta'] = 15.89;
menu['Shrimp Soup'] = 12.43;
menu['Persian Rice'] = 21.99;
ここでの違いは何ですか、彼らは両方とも同じ仕事をしていますが、異なる概念がありますか?
Pythonでは、辞書はマッピングタイプの形式です。それらは、中括弧で囲まれたコンマ区切りの名前と値のペアのシーケンスを使用して初期化できます。それらは、角括弧を含む配列表記を使用してアクセスされます。キーには、数字や文字列など、ハッシュ可能なものを使用できます。
Javascriptでは、辞書はオブジェクトと同じです。 Pythonと同じ構文を使用して初期化できます。キーは、数字、文字列、または識別子です。辞書はオブジェクトでもあるため、配列表記を使用して要素にアクセスできます。 b [i]、またはプロパティ表記を使用します。 b.i.
次のような初期化子で使用される識別子を考えます
b = {i:j}
Python iとjの両方が評価されますが、Javascriptではjのみが評価されます。Javascriptでは、識別子iを使用してドット表記で書き込む権限もあります。
i='k' j=1 b = {i:j} b['k'] # -> 1
JavaScriptでは、
i='k' j=1 b = {i:j} b['i'] // -> 1 b.i // -> 1 // b[i], b['k'] and b.k are not defined
Javascriptでは、ドット表記法で識別子を使用することは、配列表記法で識別子と「似ている」文字列を使用することとすべての場合で完全に同一です。したがって、b = {'i':1}; b ['i'] //-> 1 b.i //-> 1辞書で数値またはブール値が使用されると、Javascriptは数値またはブール値の文字列表現を使用して要素にアクセスします。そうではありませんPython —文字列と数値(またはブール値)は異なるハッシュ可能です。
両方の言語の違いに興味がある場合は、 ans をご覧ください
Python辞書はハッシュ可能なものでなければなりません(たとえば、文字列、数値、浮動小数点数など)。
以下は、JavaScriptの有効なオブジェクトです。
const javascriptObject = { name: 'Alexander Pushkin', year: 1799 }
ただし、Python辞書:
python_dictionary = {name: 'Alexander Pushkin', year: 1799}
# Traceback (most recent call last):
# NameError: name 'name' is not defined
簡単な修正方法は、Python辞書のキーを文字列に変換することです。
my_dictionary = {'name': 'Alexander Pushkin', 'year': 1799}
Dictを使用して、JavaScriptでオブジェクトを作成できます。データを保持するだけでなく、コンストラクターなどの他の多くの強力な機能も備えています。