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

Python检查字典字符串值唯一的练习代码存在哪些错误?

代码存在的核心错误

  • check_list 初始化位置错误:你把check_list = []放在了双层for循环的内部,每次循环都会清空重置这个列表,等循环跑完之后,check_list里只会保留最后一次外层循环比较的最后一个值,完全达不到统计重复值的目的。
  • 判断逻辑完全错误:你最后用check_list != dic来判断,前者是存值的列表,后者是字典对象,两者类型都不一样,永远不可能相等,所以不管输入字典是不是符合要求,都会走第一个返回分支,自然dic_2也会被判定为没有唯一条目。
  • 双层循环的逻辑冗余:两层遍历所有值的写法本身时间复杂度是O(n²),而且没有对同一个值重复计数的逻辑,就算你改了初始化位置,也会因为同一个值和自己比较被误判为重复。
  • 函数返回值不符合题目要求:题目要求返回布尔值True/False,你的代码返回的是字符串,和题目要求不符。

修复方案

最简单的判断方法是利用集合去重的特性,只要字典值的列表长度和去重后的集合长度相等,就说明没有重复值:

def is_1_to_1(dic):
    # 利用集合去重特性,比较值的原始长度和去重后长度
    values = list(dic.values())
    if len(values) == len(set(values)):
        # 若严格按照题目要求返回布尔值,可替换为 return True
        return f"Dictionary: {dic.items()} does have unique entries."
    else:
        # 若严格按照题目要求返回布尔值,可替换为 return False
        return f"Dictionary: {dic.items()} does not have unique entries."

dic_1 = {"Marty": "206-9024", "Hawking": "123-4567",
"Smith": "949-0504", "Newton": "123-4567"}

dic_2 = {"Marty": "206-9024", "Hawking": "555-1234",
"Smith": "949-0504", "Newton": "123-4567"}

print(is_1_to_1(dic_1))
print(is_1_to_1(dic_2))

运行输出:

Dictionary: dict_items([('Marty', '206-9024'), ('Hawking', '123-4567'), ('Smith', '949-0504'), ('Newton', '123-4567')]) does not have unique entries.
Dictionary: dict_items([('Marty', '206-9024'), ('Hawking', '555-1234'), ('Smith', '949-0504'), ('Newton', '123-4567')]) does have unique entries.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:15:06