创建一个字典,字母表中的字母是关键?

时间:2014-10-07 19:26:27

标签: python

我有一个包含随机单词的元组,例如

words = ("Apple","Charlie","Papa","Uniform","Tango","Echo","Romeo") 

我希望将它们分类为像

这样的字典
dict = {"A": "Apple","C": "Charlie", "P": "Papa", "U" : "Uniform"....}

我知道我需要初始化字典并创建一个for循环来查看元组,但我不知道如何按字母排序。

2 个答案:

答案 0 :(得分:2)

您可以使用dict理解。

>>> words = ("Apple","Charlie","Papa","Uniform","Tango","Echo","Romeo")
>>> mydict = {value[0]: value for value in words}
>>> print(mydict)
{'A': 'Apple', 'C': 'Charlie', 'E': 'Echo', 'P': 'Papa', 'R': 'Romeo', 'U': 'Uniform', 'T': 'Tango'}

它不会被订购,但如果您需要通过

>>> OrderedDict(sorted(mydict.items()))

答案 1 :(得分:1)

对于您提到过的案例,这很简单:

d = {}
for word in words:
    d[word[0]] = word

当然,正常的警告适用(因为没有排序,所以没有过滤,如果"Adam""Apple"都在你的输入中,只有第二个会找到进入输出的方式等)。要处理后一个问题,您可能需要考虑collections.defaultdict

from collections import defaultdict
d = defaultdict(list)
for word in words:
    d[word[0]].append(word)

将为您留下映射到列表的字符字典。而且,一旦你有了这个,如果你真的希望它被排序"排序"按键,您可以在collections.OrderedDict之后执行此操作:

odict = OrderedDict()
for key in sorted(d):  # d is the defaultdict from the last step.
    odict[key] = d[key]