似ているようで実は違う?JavaScriptのオブジェクトとPythonの辞書を徹底比較!

こんにちは。ゆうせいです。

Pythonを学んだ後にJavaScriptを触ったり、その逆の経験をしたりすると、「あれ、この書き方、どっちの言語だっけ?」と混乱することがありますよね。

特に、複数のデータを名前(キー)とセットで管理する書き方は、両方の言語でとてもよく似ているため、新人エンジニアの方がつまずきやすいポイントの一つです。

今回は、Pythonの「辞書(dict)」とJavaScriptの「オブジェクト(Object)」という、そっくりさんな二つの共通点と、知っておくべき大事な相違点をスッキリ整理していきましょう!


まずは共通点:そっくりな基本思想

何よりもまず、一番大切な共通点は、両者が「キー」と「値」のペアでデータを格納する、キーバリュー型のデータ構造であるという点です。

これは、キャラクターのプロフィールシートのようなものをイメージしてください。「名前」「レベル」「持ち物」といった項目(キー)に、具体的なデータ(値)を書き込んでいく。このデータを管理するための基本的な考え方は、PythonでもJavaScriptでも全く同じです。

実際にコードを見比べてみても、そのそっくり具合がよく分かります。

Pythonの辞書

player = {
    "name": "勇者",
    "level": 10,
    "items": ["剣", "盾"]
}

print(player["name"]) # "勇者"

JavaScriptのオブジェクト

let player = {
    name: "勇者",
    level: 10,
    items: ["剣", "盾"]
};

console.log(player.name); // "勇者"

基本的な形がほとんど同じなので、どちらかの言語を知っていれば、もう片方もすぐに理解できますね。


ここが違う!注目すべき4つの相違点

基本的な考え方は同じですが、悪魔は細部に宿ります。文法や言語内での立ち位置に、いくつか重要な違いがあるので見ていきましょう。

1. キーの書き方

一番よく間違えるのが、キーの書き方です。

  • Python: キーが文字列の場合、必ず引用符(" or ')で囲む必要があります。
  • JavaScript: キーがプログラムの変数名として使える文字(スペースやハイフンなどを含まない)の場合、引用符を省略できます。上の例の namelevel がそうですね。

もちろん、JavaScriptでも "player name" のようにスペースを含むキーを使いたい場合は、引用符で囲む必要があります。

2. 値へのアクセス方法

値を取り出す方法にも違いがあります。

  • Python: player["name"] のように、角括弧 [] にキーの文字列を入れてアクセスします。
  • JavaScript: Pythonと同じ角括弧 player["name"] でのアクセスに加えて、キーが引用符なしで書けるものであれば、ドット . を使って player.name のようにアクセスできます。このドット記法は非常に便利で、JavaScriptでは主流の書き方です。

3. 言語における「立ち位置」

これは少し概念的な話になりますが、非常に重要です。

  • Python: 辞書は、リストやタプル、セットなどと並ぶ、数ある便利な「データ構造」の一つです。その主な役割は、データを効率的に格納し、取り出すことです。
  • JavaScript: オブジェクトは、単なるデータ構造ではありません。JavaScriptという言語そのものを形作る、最も基本的な「部品」です。JavaScriptでは、関数や配列など、ほとんどのものが内部的にはオブジェクトとして扱われています。オブジェクトは、JavaScriptの根幹をなす概念なのです。

4. 用意されている機能(メソッド)

キーや値の一覧を取得する、といった操作で使うメソッドの名前や使い方も異なります。

  • Python:
    • player.keys(): キーの一覧を取得
    • player.values(): 値の一覧を取得
    • player.items(): キーと値のペアの一覧を取得
  • JavaScript:
    • Object.keys(player): キーの一覧を取得
    • Object.values(player): 値の一覧を取得
    • Object.entries(player): キーと値のペアの一覧を取得

Pythonでは辞書オブジェクト自身がメソッドを持っているのに対し、JavaScriptでは Object というグローバルなオブジェクトのメソッドに、対象のオブジェクトを渡して使うのが特徴的ですね。


まとめ:混乱しないためのポイント

いかがでしたか?そっくりに見えても、文法や背景にある思想にははっきりとした違いがあるんですね。

最後に、二つの言語を行き来するときに混乱しないための、簡単な覚え方を共有します。

  • 「Pythonのキーは引用符で囲むのが基本!」
  • 「JavaScriptではドット記法が使えるのが便利!」
  • 「JavaScriptのオブジェクトは、ただの入れ物じゃなくて、もっと偉大な存在!」

まずはこの3点だけ意識してみてください。

今後の学習としては、JavaScriptに最近導入された Map という、よりPythonの辞書に近い純粋なデータ構造について学んでみたり、JavaScriptのオブジェクトの根幹にある「プロトタイプ」という仕組みを調べてみると、両者の違いがさらに深く理解できるようになりますよ!

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。