我有一个包含随机单词的元组,例如
words = ("Apple","Charlie","Papa","Uniform","Tango","Echo","Romeo")
我希望将它们分类为像
这样的字典dict = {"A": "Apple","C": "Charlie", "P": "Papa", "U" : "Uniform"....}
我知道我需要初始化字典并创建一个for循环来查看元组,但我不知道如何按字母排序。
答案 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]