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

Python中同一字典keys()与values()相等判断返回False问题

问题原因

1. 直接判等的两个对象类型不同

Python 3 中字典的keys()方法返回的是dict_keys类型的视图对象,values()方法返回的是dict_values类型的视图对象,二者属于完全不同的类,不同类型的对象直接做==判等默认返回False,和内部承载的内容无关。
你可以执行以下代码验证二者的类型差异:

# 注意不要用list作为变量名,会覆盖Python内置的list类型,这里改名为my_dict
my_dict = {"Text":"Text"}
print(type(my_dict.keys()))
print(type(my_dict.values()))

2. 正确的内容对比方式

如果你需要判断字典的键集合和值集合内容是否一致,需要先把二者转为相同类型的可迭代对象再对比:

  • 如果你使用的是Python 3.7及以上版本(字典默认按插入顺序存储),需要按顺序匹配键值,可以转成列表对比:
my_dict = {"Text":"Text"}
if list(my_dict.keys()) == list(my_dict.values()):
    print("True")
else:
    print("False")

上述代码会输出你预期的True。

  • 如果你不需要考虑顺序,只需要判断所有键和所有值的元素完全重合,可以转成集合对比:
my_dict = {"Text":"Text"}
if set(my_dict.keys()) == set(my_dict.values()):
    print("True")

额外注意

不要使用list、dict这类Python内置类型名作为自定义变量名,会覆盖原有的内置方法/类型定义,导致后续代码出现不可预期的错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:36:02