Python如何提取字典前N个键并拼接为指定单词数的句子
实现方案
Python 3.7+ 版本中字典默认保留键的插入顺序,你给出的示例字典键的插入顺序和句子中单词顺序完全一致,不需要额外做排序处理,直接提取前size个键拼接即可。
完整实现代码
def build_sentence(word_positions_dict, size): # 提取字典键序列,切片取前size个单词 words = list(word_positions_dict.keys())[:size] # 用空格拼接为完整句子返回 return ' '.join(words) # 测试用例 my_dict = {'all': [0], 'animals': [1, 6], 'are': [2, 7], 'equal': [3, 9], 'but': [4], 'some': [5], 'more': [8], 'than': [10], 'others': [11]} print(build_sentence(my_dict, 4))
运行结果
执行上述代码会输出预期结果:
all animals are equal
补充说明
- 如果你用的是Python 3.7以下版本,普通字典不保证插入顺序,需要换用
collections.OrderedDict存储词位数据,才能保证取到的前序键顺序正确。 - 切片写法自带边界容错:如果传入的
size大于字典总键数,会自动返回所有单词拼接的句子,不需要额外写越界判断逻辑。 - 如果坚持用你之前写的
for遍历逻辑实现,可以加一个计数变量,每拿到一个键就存入结果列表,计数达到size时直接break跳出循环,最后拼接结果即可,只是这种写法比直接切片更繁琐。
内容的提问来源于stack exchange,提问作者Ashley
相关产品推荐
相关产品推荐

