2011-01-24 24 views
1

辞書要素に「タグ付け」するのと同じことをしたいと思います。ここでタグ付け辞書データ

のアイデアを説明するためにいくつかの擬似コードです:

mydict = dict() 
mydict['thiskey'] = 'myvalue' 
#then i would like to do this: 
mydict['thiskey'].tag = 1 

はこのようなものはありますか? か、私はちょうど何とか値に追加することができますか? しかし、私は元の値にまだアクセスする方法を知る必要があります...

答えて

3
>>> class MyStr(str):pass 
... 
>>> mydict = dict() 
>>> mydict['thiskey'] = MyStr('myvalue') 
>>> mydict['thiskey'].tag = 1 
+0

+1これが最もエレガントであります溶液。 – aaronasterling

+0

もし私がタギングを使用していないのであれば、単にmydict ['thiskey'] =(myvalue、1)のようなものを使うことができますか?もしそうなら、私は2番目の項目の値をどのように編集しますか?それはmydict ['thiskey'] [1] = 33などのようなものでしょうか? – jml

+0

@jmlでも、タプルを使うことはできませんでしたが、リストはうまくいくでしょう - 'mydict ['thiskey'] = [myvalue、1]' –

3

2つの可能性は、タグと値だけを含む単純なTaggedDataクラスを作成することです。または、キー 'タグ'と '値'だけの値として辞書を使用します。

2
mydict = dict() 
mydict['thiskey'] = TaggedObject("myvalue") 
mytag = Tag("tagName") 
mydict['thiskey'].tag = mytag 

ですから、二つのクラスTaggedObjectTagを作成する必要があるが、後者はオプションです:あなたは、単に文字列を使用して、これを書くことができます。

mydict = dict() 
mydict['thiskey'] = TaggedObject("myvalue") 
mydict['thiskey'].tag = "tagName" 
関連する問題