如何通过迭代产生如下内容的单词来更新空的python字典:{'单词中的字母':字母的位置}?

时间:2019-01-24 02:50:53

标签: python python-3.x string dictionary for-loop

我正在尝试将此字符串转换成字典,以便产生一个键-值对,其中“键”是字母,“值”是其在单词中的对应位置:示例

word = 'jazz'
word_dict = {'j':[0],'a':[1],'z':[2,3]}

这就是我想要做的:

        word = 'jazz'
        word_dict = {}
        for key, value in enumerate(word):
            dict_word = {value:key}
            print(dict_word)

上面的代码是:

{'j': 0}
{'a': 1}
{'z': 2}
{'z': 3}

我有点卡在这里,不知道如何进一步进行操作,因此我可以如上所述将循环生成的这些输出更新为字典。我对此很陌生,因此将不胜感激。 谢谢。

3 个答案:

答案 0 :(得分:1)

您可以use a defaultdict

from collections import defaultdict

word = 'jazz'
word_dict = defaultdict(list)

for idx, chr in enumerate(word):
    word_dict[chr].append(idx)

print(word_dict)

输出:

defaultdict(list, {'j': [0], 'a': [1], 'z': [2, 3]})

生成的defaultdict的行为与真实的dict完全一样,但是由于某种原因如果您需要将其作为dict,则可以调用dict(word_dict)。但是,在dict可以工作的任何地方,defaultdict都是子类,因此可以工作。

答案 1 :(得分:0)

这是您要寻找的吗?

word = 'jazz'
word_dict = {}

for key_as_value, value_as_key in enumerate(word):
    if value_as_key in word_dict:
        word_dict[value_as_key].append(key_as_value)
    else:
        word_dict[value_as_key] = [key_as_value]

print(word_dict)

# below is the output
{'j': [0], 'a': [1], 'z': [2, 3]}

答案 2 :(得分:0)

您正在寻找的东西在工作吗?
请检查此代码。

word = 'jazz'
word_dict = {}
for key, value in enumerate(word):
    dict_word = {value:key}
    word_dict.update(dict_word)
    print(dict_word)
print (word_dict)