Python中的字典操作

Python中的字典操作,python,dictionary,Python,Dictionary,我有一段文本,我用python创建了一个字典。它将单词作为键,并将单词在文本中出现的次数作为值。此词典按值字段的递减值排序。以下是我列表中的一个片段: [('the\n', 1644), ('and\n', 872), ('to\n', 729), ('a\n', 632), ('she\n', 541), ('it\n', 530), ('of\n', 514), ('said\n', 462), ('i\n', 410), ('alice\n', 386), ('in\n', 369),

我有一段文本,我用python创建了一个字典。它将单词作为键,并将单词在文本中出现的次数作为值。此词典按值字段的递减值排序。以下是我列表中的一个片段:

[('the\n', 1644), ('and\n', 872), ('to\n', 729), ('a\n', 632), ('she\n', 541), 
('it\n', 530), ('of\n', 514), ('said\n', 462), ('i\n', 410), ('alice\n', 386),
('in\n', 369), ('you\n', 365), ('was\n', 357), ('that\n', 280), ('as\n', 263), 
('her\n', 248), ('at\n', 212), ('on\n', 193), ('all\n', 182), ('with\n', 181),
('had\n', 178), ('but\n', 170), ('for\n', 153), ('so\n', 151), ('be\n', 148), 
('not\n', 145), ('very\n', 144), ('what\n', 136), ('this\n', 134),
('they\n', 130), ('little\n', 128), ('he\n', 120), ('out\n', 117),
('is\n', 108), ... ]
我想打印25个最常用的单词。这相当简单,我已经做到了。下一部分是打印25个最常见的单词,以字母“f”开头。我如何找到它并将其添加到25个最常用单词的列表中


此外,我还必须为所有单词添加一个等级。例如,在我的字典中,“the”将排在第一位,“2”等等。如何将排名添加到单词列表中?

只需使用列表进行筛选:

f_words = [(word, freq) for (word, freq) in the_list if word.startswith('f')]

由于原始列表已排序,因此此列表也将排序。然后,您只需将其切片即可获得前25名:
f_单词[:25]

只需使用列表进行筛选:

f_words = [(word, freq) for (word, freq) in the_list if word.startswith('f')]

由于原始列表已排序,因此此列表也将排序。然后,只需将其切片即可获得前25个:
f_单词[:25]

一个选项是使用
itertools.ifilter()
itertools.islice()

除了使用ifilter(),还可以使用生成器表达式:

f_words = islice((w for w, c in words if w.startswith("f")), 25)
for word in f_words:
    print word.rstrip()

这两种方法的优点是,您不需要先过滤整个列表——循环将在25个单词后停止。

一个选项是使用
itertools.ifilter()
itertools.islice()

除了使用ifilter(),还可以使用生成器表达式:

f_words = islice((w for w, c in words if w.startswith("f")), 25)
for word in f_words:
    print word.rstrip()

这两种方法的优点是,您不需要先过滤整个列表——循环将在25个单词后停止。

如果我想对这些文档从1到25进行排序,我如何将排序包括在键:值对列表中?您可以使用
枚举(some_list,1)
来获取(索引,元素)对。
1
表示起始点,否则它从零开始计数。如果我想对这些文档从1到25进行排序,如何将排序包括在键:值对列表中?您可以使用
枚举(some_list,1)
获取(索引,元素)对。
1
指示起点,否则从零开始计数。