[英]Python: matching values from one list to the sequence of values in another list
[英]Python matching one list to dict values in another list
我有2个清单; 清单一是:
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的值增加一。
我不确定如何实现这一目标,请寻求帮助。
谢谢
这是一个使用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}]
我认为将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
我认为这应该可以解决您的问题
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
列表不是基于零的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.