[英]Lambda inside dictionary comprehension
我無法解釋此功能的工作原理,有人可以解釋花括號后的括號是什么意思嗎?
def max(a,b):
f = {a >= b : lambda: a, b >= a: lambda: b}[True]
return f()
對於max,這是一個非常復雜的定義( 奇怪的 ),基本上它創建了一個字典,其中的鍵為布爾值True
和False
,值是a
或b
取決於哪個是最大值。 例如max(1,2)
創建以下字典:
{ False: lambda: 1, True: lambda: 2}
然后,在上面的示例lambda: 2
,為f
分配了True值的函數,這是一個返回常數2
的函數。 最后,該函數返回對f()
的調用,即值2
。
為了更具體地回答您的問題,花括號后的方括號表示獲取True
鍵字典的值。
f = {a >= b : lambda: a, b >= a: lambda: b}[True]
上面的語句將始終被評估為以下之一:
情況1:a> b
f = {True : lambda: a, False: lambda: b}[True]
這意味着f = lambda:a
這意味着f()是一個
情況2:b> a
f = {False: lambda: a, True: lambda: b}[True]
這意味着f = lambda:b
這意味着f()是b
情況3:a = b
f = {True : lambda: a, True: lambda: b}[True]
這意味着f = lambda: a
或可能是f = lambda:b
這意味着f()是a或b
如果您不了解群集和lambda函數,將很難理解!
但是這個例子教了一些東西:
{"name": "Jundullah", "age": 18}["name"] #ouput: "Jundullah"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.