1

私はPythonのn00bであり、シェルとPHPスクリプトから得た知識をPythonに取り入れようとしています。私は実際に、(コードを理解しやすい形に保ちながら)内部の値を作成および操作する概念を理解しようとしています。

LISTSとMAPPINGS(dict())のPython実装を利用するのに問題があります。基本配列(Pythonリスト)内で連想配列(Pythonマッピング)を使用する必要があるスクリプトを書いています。リストでは、一般的なINTインデックスを使用できます。

ありがとう!

これが私が現在持っているものです:

'''  Marrying old-school array concepts
[in Python verbiage] a list (arr1) of mappings (arr2)
[per my old-school training] a 2D array with 
        arr1 using an INT index
        arr2 using an associative index
'''
arr1 = []
arr1[0] = dict([    ('ticker'," "),
                        ('t_date'," "),
                        ('t_open'," "),
                        ('t_high'," "),
                        ('t_low'," "),
                        ('t_close'," "),
                        ('t_volume'," ")
                        ] )
arr1[1] = dict([    ('ticker'," "),
                        ('t_date'," "),
                        ('t_open'," "),
                        ('t_high'," "),
                        ('t_low'," "),
                        ('t_close'," "),
                        ('t_volume'," ")
                        ] )

arr1[0]['t_volume'] = 11250000
arr1[1]['t_volume'] = 11260000

print "\nAssociative array inside of an INT indexed array:"
print arr1[0]['t_volume'], arr1[1]['t_volume']

PHPでは、次の例が機能しています。

'''
arr_desired[0] = array( 'ticker'        => 'ibm'
                            't_date'        => '1/1/2008'
                            't_open'        => 123.20
                            't_high'        => 123.20
                            't_low'     => 123.20
                            't_close'   => 123.20
                            't_volume'  => 11250000
                        );
arr_desired[1] = array( 'ticker'        => 'ibm'
                            't_date'        => '1/2/2008'
                            't_open'        => 124.20
                            't_high'        => 124.20
                            't_low'     => 124.20
                            't_close'   => 124.20
                            't_volume'  => 11260000
                        );

print arr_desired[0]['t_volume'],arr_desired[1]['t_volume'] # should print>>> 11250000 11260000
'''
4

2 に答える 2

3

リストとdictリテラルの定義は、はるかに単純化できます。

keys = ['ticker', 't_date', 't_open', 't_high', 't_low', 't_close', 't_volume']
arr1 = [
    dict.fromkeys(keys, ' '),
    dict.fromkeys(keys, ' ')
]

このメソッドを使用してdict.fromkeys()、キーのシーケンスを使用してdictを初期化します。すべて、指定されたデフォルト値(1スペースの文字列)を使用します。

Pythonで空のリストを定義する場合、存在しない要素を単純にアドレス指定することはできません。.append()または、このメソッドを使用して、リストに新しい要素を追加します。

arr1.append({'key': 'value', 'otherkey': 'othervalue'})

上記の例では、{k: v}dictリテラル表記を使用しています。

最初に(優れた) Pythonチュートリアルを読むことでメリットが得られると思います。

于 2012-12-13T16:31:18.607 に答える
0

私と同じようなプログラミングのバックグラウンドを持っている人たちのために、私が学んだことは次のとおりです。

arr0 = dict( [ ('one',1), ('two',2), ('three',3) ] )
for k,v in arr0.iteritems() : 
    print k,v           #prints the associative array key with the value

keys = ['ticker','t_open','t_high','t_low','t_close','t_volume']
arr1 = [
            dict.fromkeys(keys,' '),
            dict.fromkeys(keys,' ')
        ]

arr1[0]['t_volume'] = 11250000
arr1[1]['t_volume'] = 11260000
arr1.append( {'ticker' : 'ibm', 't_date' : '1/2/2008', 't_volume' : 11270000} )
arr1.insert(3, {'ticker' : 'ibm', 't_date' : '1/3/2008', 't_volume' : 11280000} )

print "\nAssociative array inside of an INT indexed array:"
print arr1[0]['t_volume'], arr1[1]['t_volume']
print "\n ",arr1[2]
print arr1[2]['t_volume'], arr1[3]['t_volume']

要素(値)の追加ロジックに注意してください。

于 2012-12-13T18:35:09.150 に答える