如何编写Python函数提取字典各键对应的专属唯一单词
解决字典中提取每个键专属单词的问题
嘿,我来帮你搞定这个需求!要找出每个键对应的仅属于该键的单词,最清晰高效的思路是先统计所有单词在整个字典里的出现频率,然后只保留那些仅出现一次的单词——因为只出现一次就意味着它只属于某一个键。
下面是完整的Python函数实现:
def get_unique_words_per_key(input_dict): # 第一步:统计所有单词的全局出现次数 word_frequency = {} for word_list in input_dict.values(): for word in word_list: # 若单词不在字典中则默认计数0,否则加1 word_frequency[word] = word_frequency.get(word, 0) + 1 # 第二步:为每个键筛选专属单词并转为字符串 unique_words_dict = {} for key, words in input_dict.items(): # 筛选出仅出现一次的单词 exclusive_words = [word for word in words if word_frequency[word] == 1] # 将列表转为空格分隔的字符串,匹配期望输出格式 unique_words_dict[key] = " ".join(exclusive_words) return unique_words_dict # 测试你的用例 d = {1:["one", "two", "three"], 2:["two", "four", "five"], 3:["one","four", "six"]} print(get_unique_words_per_key(d)) # 输出结果:{1: 'three', 2: 'five', 3: 'six'}
关键逻辑解释
- 统计频率:我们遍历字典中所有的单词列表,用一个字典记录每个单词出现的总次数。这种方法的时间复杂度是O(N)(N是所有单词的总数),比逐个对比其他键的列表要高效得多,尤其是当字典规模较大时。
- 筛选专属单词:对每个键对应的单词列表,用列表推导式过滤出那些全局出现次数为1的单词——这些单词就是仅属于当前键的专属单词。
- 格式转换:最后用
" ".join()把筛选后的单词列表转为空格分隔的字符串,完全匹配你期望的输出格式。
如果你之前尝试的是逐个检查单词是否存在于其他所有列表中,那种方法不仅代码繁琐,效率也会很低(时间复杂度O(K*M),K是键的数量,M是每个列表的平均长度),而统计频率的方法则简洁又高效。
内容的提问来源于stack exchange,提问作者Jabernet
相关产品推荐
相关产品推荐

