2017-12-03 91 views
1
x = ["hi", "hi", "bye", "see", "you", "later"] 
for i in x: 
    sum = x.count(i)  
    y = dict((i, sum) for i in x) 
print(y) 

当我打印此代码时,它给了我一个关键值为1的字典。但是,我试图实现的是字典中的值是列表中每个单词重复的次数。所以,对于这个例子:{'hi':2,'bye':1,'see':1,'you':1,'later':1}是我在输入时想要达到的输入X。谁能帮我?谢谢:)如何使用表示单词在列表中重复的次数的值创建字典?

+3

['collections.Counter()'](https://docs.python.org /3/library/collections.html#collections.Counter)? – alecxe

回答

1

defaultdict适合这种任务。

from collections import defaultdict 
x = ["hi", "hi", "bye", "see", "you", "later"] 

y = defaultdict(int) 
for key in x: 
    y[key] += 1 
print(y) 
print(dict(y)) 

添加计数器版本。如评论(比defaultdict更容易)。

from collections import Counter 
x = ["hi", "hi", "bye", "see", "you", "later"] 
y = Counter(x) 
print(y) 

添加不导入模块。

x = ["hi", "hi", "bye", "see", "you", "later"] 

y = dict() 
for key in x: 
    if not key in y: 
     # y.update({key: 1}) 
     y[key] = 1 
    else: 
     y[key] += 1 

print(y) 
+0

有没有办法做到这一点,而无需导入任何模块? –

+0

当然有。我添加了这样一个用例。 – dkato

1

,你可以有这样的事情

x = ["hi", "hi", "bye", "see", "you", "later"] 
y = {i:x.count(i) for i in x} 
print(y) 

,其结果将是

{'bye': 1, 'hi': 2, 'later': 1, 'see': 1, 'you': 1} 
相关问题