使用字典将单词数组拆分为字符

时间:2017-12-02 01:09:16

标签: python arrays python-2.7 dictionary split

到目前为止,我已经阅读了一个文件(这是一首诗)并将这首诗分开,以便数组的每个元素都是诗中的每个单词(例如:['嘿',&#39 ;骗取''骗取' ...等]

现在我需要遍历该数组并输入单词[0]到字典中以创建wordDict = {H:1,E:1,Y:1}。每个单词将被评估为每个字母的数量作为键值取决于它出现在单词中的次数(例如:apple = wordDict = {a:1,p:2,l:1,e: 1})。

wordDict = {};
for word in words:
    for letter in word:
        wordDict[letter] = 0 ; 
return wordDict;

以上是我到目前为止所做的一切,但所有这一切都是打印诗的每个字母作为键,键值= 0(只是为了测试)。我还需要在每次评估新单词时重新定义wordDict。

我试图尽可能地解释这一点,但如果您需要澄清,请发表评论告诉我。

4 个答案:

答案 0 :(得分:1)

import collections
words = ['Hey', 'diddle', 'diddle']
[collections.Counter(word) for word in words]
# or list(map(collections.Counter, words))

给你:

[Counter({'H': 1, 'e': 1, 'y': 1}),
 Counter({'d': 3, 'e': 1, 'i': 1, 'l': 1}),
 Counter({'d': 3, 'e': 1, 'i': 1, 'l': 1})]

答案 1 :(得分:1)

words = ['apple', 'banana']
allwordsList=[]
for word in words:
    wordDict = {};
    for letter in word:
        wordDict[letter] = 1 if letter not in wordDict else wordDict[letter] + 1; 
    allwordsList.append(wordDict)
print(allwordsList)

这会给你

[{'a': 1, 'p': 2, 'l': 1, 'e': 1}, 
 {'b': 1, 'a': 3, 'n': 2}
]

答案 2 :(得分:1)

您可以尝试使用map()collections.Counter()

import collections

words = ['Hey', 'diddle', 'diddle']

print(list(map(dict, map(collections.Counter, words))))

哪个输出:

[{'y': 1, 'e': 1, 'H': 1}, {'i': 1, 'l': 1, 'e': 1, 'd': 3}, {'i': 1, 'l': 1, 'e': 1, 'd': 3}]

答案 3 :(得分:1)

您可以在不导入任何模块的情况下尝试此操作:

file1=['Hey', 'diddle','diddle']

track=0
for words in file1:
    result = {}

    for chara in words:
        if chara not in result:
            result[chara]=track
        else:
            result[chara]+=track

    print(result)
  

输出:

{'H': 0, 'y': 0, 'e': 0}
{'d': 0, 'i': 0, 'l': 0, 'e': 0}
{'d': 0, 'i': 0, 'l': 0, 'e': 0}