3

Python でいくつかのリレーショナル データを含むテーブルを表す標準的な方法はありますか? つまり、次のようなものです。

      Singular   Plural
1st.  I make     we make
2nd.  you make   you make
3d.   he makes   they make

次のように、行と列の両方でデータにアクセスできるようにしたいと思います。

1st. Singular -> I make
1st.          -> I make, we make
Plural 3d.    -> they make
Plural        -> we make, you make, they make

冗長性なしに、データを効率的に保存する方法がわかりません。私が考えることができるより良いのは、複数の辞書(行ごとに1つ、列ごとに1つ)を使用することです。これには、辞書自体に関連付けられた行または列と同じ数のキーと、関連付けられたすべてを含む特別なキーが1つ含まれます。値。

このようなことはすでに対処されていると思いますので、質問します。

4

2 に答える 2

4

私の他の答えの代わりに、namedtuple@jamylak の提案に従って使用できます。

from collections import namedtuple

class Verb(namedtuple("_Verb",  # arbitrary class name/tag
                      ["singular1", "singular2", "singular3",
                       "plural1", "plural2", "plural3"])):
    @property
    def singular(self):
        return (self.singular1, self.singular2, self.singular3)

    # similarly for plural

    @property
    def first_person(self):
        return (self.singular1, self.plural1)

    # similarly for 2nd and 3rd person

「make」は次のように表すことができます

Verb("make", "make", "makes", "make", "make", "make")

繰り返しになりますが、これは英語の活用の単純さを活用することで最適化できます。

namedtupleこのソリューションの欠点は、不変であるため、テーブル内の個々のフィールドを変更できないことです。変更したい場合は、通常のclasswith を使用して__slots__ください。

于 2013-04-25T10:37:47.140 に答える