0

我有 2 个清单;清单一是:

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

另一个是这样的:

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

我已将 dicts 放在一个列表中,因为我希望它们保持有序,因此我运行了一个条件:

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

所以在这种情况下,我想要做的是,因为 2200 小于 2500,我希望列表 z 中的键号 4 的值增加一。

我不知道如何实现这一点,希望得到一些帮助。

谢谢

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已经是我认为比列表中所需的单项字符串键项更有用的形式,但是正如您所看到的,它可以在一行中再次转换为您的首选格式。

输出:

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

我认为将 z 作为一个简单的整数列表就足以满足您的需求。然后:

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

for i, elem in enumerate(a):
    if elem > 2200:
         z[i] += 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 回答