1

プログラミングの基本的なルールや、PyCassa を使用するための基本的なルールが欠けているかどうかはわかりません!

問題は、cassandra にクエリを実行して、値が 5 の column5(列の名前) のすべての行を表示する必要があることです。この結果を for ループ内で出力できますが、外部では出力できません。私の現在のコードは次のとおりです。

expr2 = create_index_expression('column5', '5')
clause2 = create_index_clause([expr2], count=20)
for keyx, colx in col_fam.get_indexed_slices(clause):
      print colx

これは機能しますが、機能しないのは次のとおりです。

expr2 = create_index_expression('column5', '5')
clause2 = create_index_clause([expr2], count=20)
for keyx, colx in col_fam.get_indexed_slices(clause):
    t = colx
    # ...
print t

一部の人にとっては、この質問はあまりにも幼稚に聞こえるかもしれませんが、信じてください、私は先週末からこれに頭を悩ませています。

4

2 に答える 2

2

最初の例では、反復ごとに t が出力され、基準を満たすレコードごとに 1 行になります。2 番目の例では、反復ごとに t が置き換えられるため、最終的な値のみが出力されます。単に印刷したい場合は、print ステートメントをインデントしてループの一部にすることができますが、最初の例はそのために機能します。リストに保存する場合は、リストを作成し、各反復で colx を追加します。

expr2 = create_index_expression('column5', '5')
clause2 = create_index_clause([expr2], count=20)
t=[]
for keyx, colx in col_fam.get_indexed_slices(clause):
    t.append(colx)
print t
于 2012-02-23T01:05:52.120 に答える
0

最初の答えを拡張するために、これは出力OrderedDictionariesを配列(リスト)として取得するためのコンパクトな方法の1つです。

そして、あなたがすべての行count=20が欲しいと言ったので、私は省略しました。

expr2 = create_index_expression('column5', '5')
clause2 = create_index_clause([expr2])

output = [colx.items() for keyx, colx in col_fam.get_indexed_slices(clause2)]

または、forループ表記を維持します。

expr2 = create_index_expression('column5', '5')
clause2 = create_index_clause([expr2])
output = []

for keyx, colx in col_fam.get_indexed_slices(clause2):
    output.append (colx.items()) 

そして、はい、Python配列(リスト)が{}ではなく[]表記を使用していることを2番目に説明します。

于 2012-05-29T18:53:00.863 に答える