-1

以下の例の形式の辞書を作成したいと思います。

c={
    'A':{('AB',2.9)},
    'B':{('AS',3.9)},
    'R':{('D',2.0)},
    'V':{('AD',2.9)},
    'G':{('AX',2.9)}
 }

このタプルをループでフィードします。これが私が試したものですが、これから間違った形式になります。

my_tuple  = ('AB',2.9)
c         = {}
my_key    = 'A'
c.update({my_key:{my_tuple}})

この特定のケースでは、取得したいと思います{'A': set([('AB', 2.9)])}。私はこれが適切な辞書であることを理解していますが、どうすればそれを改善し、値をcフォーマットで返すことができますか?. 私はすなわち欲しい:

{'A': {('AB', 2.9)}}
4

2 に答える 2

2

s = {1, 2, 3}宣言するより短い方法です s = set([1,2,3])

したがって、あなたはすでにあなたが望むものを手に入れています。それは単なる表現の問題です.

>>> {('AB',2.9)} == set({('AB',2.9)})
True
于 2013-03-24T08:54:23.393 に答える
1

表現だけが重要な場合は、継承しsetて独自のバージョンを作成__repr__し、想像力を自由に使って満足させることができます :-)

>>> class funky_set(set):
    def __new__(cls,*args):
        return set.__new__(cls,args)
    def __repr__(self):
        return "{{{}}}".format(','.join(map(str, self)))

>>> my_tuple  = ('AB',2.9)
>>> c         = {}
>>> my_key    = 'A'
>>> c.update({my_key:funky_set(my_tuple)})
>>> c
{'A': {AB,2.9}}
于 2013-03-24T08:59:43.180 に答える