0

リストの各リストの価格の数を計算するためのリストを作成しようとしています。

次のコードで:

print data['OtherBids']

次の出力が得られました。

[[0.074、0.073、0.072、0.03、0.029、0.024、0.021、0.02]、[0.02、0.02、0.015]、[0.026、0.026、0.02、0.02、0.02、0.015]、[0.021、0.021、0.02、0.017] 、[0.077、0.076、0.074、0.055、0.045、0.021]、[0.053、0.052、0.051、0.023、0.022]、[0.016、0.016]]

データの大まかなビューに基づいて、1番目のリストに8つの要素、2番目のリストに3つ、3番目のリストに6つの要素があることがわかります...しかし、whileループを使用しようとするとデータを生成すると、次のエラーが返されました。

data['number'][a] = len(data['OtherBids'][a])
KeyError: 'number'

上記のエラーの原因となるコードは次のとおりです。

a = 0
b = len(data['OtherBids'])

while a <= b - 1:
    for i in data['OtherBids']:
        data['number'][a] = len(data['OtherBids'][a]).get
    a = a + 1

誰かが私がそれを修正する方法を知っていますか?

4

1 に答える 1

2

あなたには鍵dataがありません:"number"

a = 0
b = len(data['OtherBids'])
# add this line
data['number'] = dict()

while a <= b - 1:
    for i in data['OtherBids']:
        # seems to be mistype: len(data['OtherBids'][a]).get
        # I removed .get
        data['number'][a] = len(data['OtherBids'][a])
    a = a + 1

UPD

コードが複雑すぎることがわかりました

より多くのpythonicバージョン:

data['number'] = {}
for i, item in enumerate(data['OtherBids']):
    data['number'][i] = len(item)

インラインバージョン:

data['number'] = {i:len(item) for i,item in enumerate(data['OtherBids'])}
于 2012-12-15T15:11:06.513 に答える