如何访问列表字典中的值并添加它(计数器)

时间:2014-04-15 15:54:58

标签: python

所以基本上我有一个名为numList的数字列表。 防爆。 [11,54,22,42,5,16,79,18,39]

我还有一本列表字典词典。 防爆。 {0:[10,20,0],1:[15,20,0],2:[20,30,0], 3:[30,90,0]}

我的目标是遍历numList中的每个数字,并遍历字典中的每个键,并检查numList中的每个数字是否在字典中每个键的前两个值之间。如果数字在每个键的前两个值之间,那么我想将+1添加到该键的第三个值(因此为什么每个键的第三个值为0)。

基本上,11> = 10且11 <= 20?是的,所以+1。所以现在它是{0:[10,20,1],1:[15,20,0],2:[20,30,0], 3:[30,90,0]}并通过每个键执行此操作。

所以基本上如何添加+1?我也遇到了以下错误:

if number >= dictionary.get(key,0) and number <= dictionary.get(key,1):
TypeError: unorderable types: int() >= list()

代码:

dictionary = dict(list)
for number in numList:
    for key in dictionary:
        if number >= dictionary.get(key,0) and number <= dictionary.get(key,1):
            print("testing") #add 1

3 个答案:

答案 0 :(得分:3)

您误解了dict.get的含义 - 如果字典中没有键,则第二个参数实际上是要返回的默认值。在您的情况下,它实际上返回一个列表。你想要的是:

if number >= dictionary[key][0] and number <= dictionary[key][1]:
    ...

答案 1 :(得分:1)

这可能会更好地重新组织您的字典。试试这个:

table = {(10,20): 0, (15,20): 0, (20,30): 0, (30,90): 0}

for key in table:
    start,end = key
    if start <= num <= end:
        table[key] += 1

请记住,只要您使用其键只是整数的字典,您也可以使用列表。组织它们,使它们的密钥相关。

答案 2 :(得分:1)

dictionary = {0:[10,20,0],1:[15,20,0],2:[20,30,0], 3:[30,90,0]}
list_numbers = [11,54,22,42,5,16,79,18,39]

for n in list_numbers:
    for value in dictionary.values():
        if value[0] < n < value[1]:
            value[2]+=1

输出:

print dictionary
  

{0:[10,20,3],1:[15,20,2],2:[20,30,1],3:[30,90,4]}