如何检查字典中的值?

时间:2017-05-14 15:15:21

标签: python

我是编程新手,我正在做文本挖掘任务。我有一个字典,其中的键作为标记和值,作为数据库中令牌的出现。

dic={'a':48,'b':32,'c':26}

并且我还有一个令牌列表,我正在尝试使用每个令牌的出现创建一个新列表。如果在字典中找不到令牌,则追加0。

my_list=['a','b','d','c','a']


ideal_output=[48,32,0,26,48]

我的原始代码是这样的:

for word in my_list:
    for k,v in dic.items():        
       if word==k:
           ideal_output.append(v)
       else:
           ideal_output.append('0')

但它会产生比我预期更多的整数,我不知道它有什么问题。我很感激你的帮助!

当前输出看起来像这样

['0',48,'0','0','0',32,'0','0','0',26,'0','0','0', 48,'0']

5 个答案:

答案 0 :(得分:2)

my_list=['a','b','d','c','a']
ideal_output = [dic.get(token, 0) for token in my_list]

答案 1 :(得分:1)

dic={'a':48,'b':32,'c':26}
my_list=['a','b','d','c','a']


ideal_output=[]

for key in my_list:
  if key in dic:
    value = dic[key]
    ideal_output.append(value)
  else:
    ideal_output.append(0)

print(ideal_output)    

答案 2 :(得分:0)

分步解决方案:

这个答案适合您,也适用于其他难以理解代码的人。对不起,如果它太详细,但它可能对某人有帮助。

首先,我们需要遍历列表,这意味着我们将检查其中的每个元素。我们将使用 for 循环来执行此操作。这将连续检查列表中的每个项目,并将其分配给变量 i 。它将运行它下面的所有代码,当它完成后,它将继续下一个项目,再次分配给我:

for i in my_list:
     # Here we'll add more code       

现在我们需要确定名为“i”的项目是否在字典中。它是当前由 for 循环检查的元素。

for i in my_list:
     if i in dic: #This checks if i is in the dictionary
         ideal_output.append(dic[i]) # dic[i] is the value we want to add to 
         # We use ideal_output.append and the value in the parentheses to add the value
         # to the list

现在我们要在列表中添加'0',如果我们放在 if 语句中的条件不满足:

for i in my_list:

     if i in dic:
         ideal_input.append(dic[i])

     else:
         ideal_output.append(0)

print(ideal_output) #This runs when the loop is finished

答案 3 :(得分:0)

您可以使用collections.defaultdict。在下面的示例中,对于找不到的每个键,它将返回0。

In [1]: from collections import defaultdict

In [2]: di = defaultdict(lambda: 0, {'a':48,'b':32,'c':26})

In [3]: di['a']
Out[3]: 48

In [4]: di['x']
Out[4]: 0

In [5]: di['p']
Out[5]: 0

但是,由于您似乎在计算文本中的字母,请查看collections.Counter

In [6]: from collections import Counter

In [7]: c = Counter('This is a text')

In [8]: c
Out[8]: 
Counter({' ': 3,
         'T': 1,
         'a': 1,
         'e': 1,
         'h': 1,
         'i': 2,
         's': 2,
         't': 2,
         'x': 1})

答案 4 :(得分:-1)

试试这个,避免第二个for循环:

ideal_output=[]

for element in my_list:
  if element in dic.keys():
    ideal_output.append(dic[element])
  else:
    ideal_output.append(0)

print(ideal_output)