You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将用户输入词汇存入字典并分配唯一不变序号

问题描述

现有如下Python代码:

s = set()
i = 0
while True:
    user_input = input("enter words: ")
    for words in user_input.strip().split():
        words_from_list = words.strip().split()
        for x in words_from_list:
            s.add(x) 
    for i in s:
    print(i)    

该代码仅能实现词汇去重存储,现在需要修改代码达成以下功能:

  • 持续接收用户输入的文本
  • 为每个首次出现的词汇分配唯一递增序号
  • 重复出现的词汇保持原有序号

输出示例如下:

enter text: how are you dear
how 1
are 2
you 3
dear 4
enter text: how was your morning
how 1
your 5
was 6
morning 7
dear 4

(注:原代码使用set导致输出顺序随机,需求仅要求重复元素保持相同序号,输出顺序可随字典特性变化)

修改后的代码
word_to_id = {}
current_id = 1

while True:
    user_input = input("enter text: ")
    # 分割输入为单词列表,自动去除前后空白
    words = user_input.strip().split()
    for word in words:
        # 仅为首次出现的单词分配序号
        if word not in word_to_id:
            word_to_id[word] = current_id
            current_id += 1
    # 输出所有已记录的词汇及其对应序号
    for word, idx in word_to_id.items():
        print(f"{word} {idx}")
    # 空行分隔不同输入的输出结果
    print()
关键修改说明
  • 用**字典word_to_id**替代原代码的set:字典的键值对结构可以直接存储词汇与序号的映射,天然满足“重复词汇复用原序号”的需求
  • 新增current_id计数器:维护当前可用的最新序号,每次新增词汇时自动递增,保证序号唯一且连续
  • 简化输入处理逻辑:直接对输入字符串执行一次strip().split()得到单词列表,删除原代码中多余的嵌套循环,提升效率
  • 修复原代码的缩进错误:确保print语句在循环块内执行,避免语法错误
  • 利用字典的键唯一性:自动跳过已存在的词汇,无需额外判断逻辑

内容的提问来源于stack exchange,提问作者Fahad Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:27:16