2017-02-01 1 views
-5

T = {}Pythonの基本的な曖昧な表記

Tはセットまたは辞書ですか?

タイプ(T)はdictを返しますが、あいまいな表記ではありませんか?または私の何かが不足していますか? sys.getsizeof(T)は148を与え、これはちょうどより安全な側に置かれていることを予期していると思います。

あなたの考えをお伝えください。

+4

数値の集合が '{} 'であるということは、Pythonで同じ方法でなければならないということを意味しません。 – Arman

+2

あなたが履歴を認識していない限り、少しあいまいです。 Pythonには常に辞書がありますが、セットは言語に比較的遅れて追加され、セットリテラルはさらに新しいものです。 –

+2

タイプ(T)がそれがdictであることを伝えたら、それはdictです。なぜあなたに嘘をつきますか? –

答えて

1

これはdictです。期間。 空のセットが必要な場合は、set()を使用します。

埋め込みセットが必要な場合は、{1, 2, 3, 4}(Python 3以降)表記またはset((1, 2, 3, 4))表記のいずれかを使用できます。

0
d = {} # A dictionary 
d = dict() # also a dictionary 
s = set() # A set 

これもthe docsに記載されている:

中括弧またはセット()関数は、セットを作成するために使用することができます。注:空のセットを作成するには、{}ではなくset()を使用する必要があります。後者は、次のセクションで説明するデータ構造である空の辞書を作成します。

特に、その後の例では明らかになります。 (正直言って、 "中括弧[...]はセットを作るのに使うことができます"と少し混乱しています。)

推測:{}の表記法が短く辞書がよく使われます。また、他の言語でも共通の表記法です。

辞書について考える方法の1つは、(キー、値)タプルのセットです。したがって、集合的な表記法は意味をなさない。

+2

逆に、セットについて考えるには、それらはキーが付いているが値はないということです。 –

+0

@ PM2Ring私は、CPythonでは、セットが実際に元々このように(値なしのdictとして)構築されていると読んでいました。 –

+2

@Chris_Rands私はそれについては分かりません。しかし、私が最初にCPythonのソースコードを調査したときには、多くの類似点がありましたが、Python 3.6ではディックの実装に幾分根本的な変更が加えられて以来、多少の違いがあることが予想されます。 –