【发布时间】:2021-01-18 14:56:36
【问题描述】:
我是 Python 新手,我试图将这个带有 if else 语句的循环转换为理解,但似乎无法破解它......
希望你们能帮助我吗?
Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
for key in list(Dict.keys()):
if key in list(Boys.keys()):
print(True)
else:
print(False)
我已经尝试了以下...
a = {key for key in list(Dict.keys()) if key in list(Boys.keys())}
b = {key if key in list(Boys.keys()) else False for key in list(Dict.keys())}
c = {key in list(Boys.keys()) if key else False for key in list(Dict.keys())}
print(c)
【问题讨论】:
-
你为什么要使用
set理解?你不是在创建一个集合,你只是在打印 true 或 false ... -
另外,停止使用
list(Dict.keys())只是为了迭代它,这是没有意义的,因为Dict.keys()是可迭代的。但实际上,您可以直接迭代dict对象,所以for key in Dict:。但更重要的是 不要这样做if key in list(Boys.keys()),同样,key in Boys.keys()会起作用,但实际上,key in Boys是你想要的,而是使用list(Boys.keys())后两个通过快速、基于散列的恒定时间搜索击败了字典的目的,并演变为列表的线性时间搜索
标签: python if-statement dictionary-comprehension for-comprehension