0

2 つのリストがあります。リスト1は次のとおりです。

a=[500,1000,1500,2000,2500,3000]

他はこんな感じです。

z=[{'1':0},{'2':0},{'3':0},{'4':0},{'5':0}]

辞書を順序付けたままにしておきたいので、辞書をリストに入れたので、条件を実行します。

for elems in a:
    if 2200 < elems:
        NOT SURE?

したがって、この状態で私がやりたいことは、2200 が 2500 より小さいので、リスト z のキー番号 4 の値を 1 増やしたいということです。

これを達成する方法がわからないので、助けてください。

ありがとう

4

3 に答える 3

2

collections.Counter を使用した別の実装を次に示します。

from collections import Counter

a = [500,1000,1500,2000,2500,3000]

z = Counter(i+1 for i,v in enumerate(a) if v > 2200)
print z

print list({str(a): b} for a, b in z.iteritems())

zリスト内の目的の単一項目、文字列キー項目よりもはるかに便利な形式だと思いますが、ご覧のとおり、1 行で再度好みの形式に変換できます。

出力:

Counter({5: 1, 6: 1})
[{'5': 1}, {'6': 1}]
于 2012-12-11T19:41:09.773 に答える
1

z を int の単純なリストとして持つことで、やりたいことには十分だと思います。それで:

z = [0, 0, 0, 0, 0]

for i, elem in enumerate(a):
    if elem > 2200:
         z[i] += 1

その 1 つの項目ディクショナリ リストが本当に必要な場合 (z と a の長さが同じであると仮定)、次のようにすることができます。

for i, elem in enumerate(a):
    if elem > 2200:
         z[i][str(i+1)] += 1
于 2012-12-11T19:25:50.303 に答える
1

これで問題が解決すると思います

a = [500,1000,1500,2000,2500,3000]

from collections import defaultdict
z = defaultdict(int)

for i, elems in enumerate(a, 1):
   if 2200 < elems:
       z[i] += 1  # can cast i to str with str(i) to exactly match the keys in the example

z編集、リストがゼロベースではないことに気付きました

于 2012-12-11T19:26:38.330 に答える