-2

次のような順序付けられた辞書があります。

source =([('a',[1,2,3,4,5,6,7,11,13,17]),('b',[1,2,3,12])])

最初に各キーの値の長さを計算し、次にその長さを計算したいと思います。sqrtたとえば、それはLです。

余りなく割り切れる位置にLを入れ、他の数の後に「1」を入れます

たとえば、source['a'] = [1,2,3,4,5,6,7,11,13,17]その長さは 9 です。したがって、平方根len(source['a'])は 3 です。

数字の位置が正確に 3 で割り切れない場合は、3 で割り切れる位置 (例: 3 位、6 位、9 位) に 3 を挿入し、その後に 1 を挿入します。

次のような結果を得るには:

result=([('a',["1,1","2,1","3,3","4,1","5,1","6,3","7,1","11,1","13,3","10,1"]),('b',["1,1","2,2","3,1","12,2"])]

リスト内の項目を文字列ペアに変更する方法がわかりません。ところで、これは宿題ではありません。ブーリアン検索エンジンを構築しようとしていたのですが、ソース データが大きすぎるため、達成したいことを説明するためにここで簡単なサンプルを作成しました :)

4

1 に答える 1

2

これは宿題のようですので、あなたが直面している問題の部分についてお手伝いします

リスト内の項目を文字列ペアに変更する方法がわかりません。

リスト全体を更新する必要があるため、その場で更新するよりも再作成する方が良いですが、リストは可変であるため可能です

リストを検討する

lst = [1,2,3,4,5]

それを文字列のリストに変換するには、リスト内包表記を使用できます

lst = [str(e) for e in lst]

map組み込みのas を使用することもできmap(str,lst)ますが、Py3.X では map が map オブジェクトを返すため、それに応じて処理する必要があることを覚えておく必要があります。

理解における条件は、条件ステートメントとして最もよく表現されます

<TRUE-STATEMENT> if <condition> else <FALSE-STATEMENT>

リスト内の項目のインデックスを取得するには、組み込みのenumerateを使用するのが最善の策です

一連の項目からフォーマットされた文字列式を作成する必要がある場合は、フォーマット文字列指定子を使用することをお勧めします

"{},{}".format(a,b)

a を含む任意のシーケンスの長さは、組み込みのlenlistを介して計算できます。

**分数累乗で演算子を使用するか、mathモジュールを使用して関数を呼び出してsqrt平方根を計算できます

問題を解決するには、上記の各提案を組み合わせる必要があります。

于 2013-03-03T07:25:46.670 に答える