使用带有排序函数的 lambda
Using a lambda with sorted function
我遇到了以下代码并且它正在运行fine.Though我在其他问题中查找了 lambda 函数,但没有找到相关答案
In[9]: portfolio=[
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'IAM', 'shares': 100, 'price': 41.1},
{'name': 'IBM', 'shares': 100, 'price': 71.1} ,
{'name': 'IBM', 'shares': 100, 'price': 31.1}
]
In [10]: s = sorted(portfolio,key = lambda s : s['price'] )
Out[10]: s
[{'name': 'IBM', 'price': 31.1, 'shares': 100},
{'name': 'IAM', 'price': 41.1, 'shares': 100},
{'name': 'IBM', 'price': 71.1, 'shares': 100},
{'name': 'IBM', 'price': 91.1, 'shares': 100}]
问题:
- 每次从列表中调用字典元素时,lambda 函数是否被调用到 return 价格? lambda 只调用一次 ?
- 如果有人能在这里解释排序的整个工作原理,那将非常有帮助
好吧,让我们试试吧:
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'IAM', 'shares': 100, 'price': 41.1},
{'name': 'IBM', 'shares': 100, 'price': 71.1} ,
{'name': 'IBM', 'shares': 100, 'price': 31.1}
]
def key_fn(s):
print("called key_fn({}) -> {}".format(s, s['price']))
return s['price']
s = sorted(portfolio, key=key_fn)
产生
called key_fn({'shares': 100, 'price': 91.1, 'name': 'IBM'}) -> 91.1
called key_fn({'shares': 100, 'price': 41.1, 'name': 'IAM'}) -> 41.1
called key_fn({'shares': 100, 'price': 71.1, 'name': 'IBM'}) -> 71.1
called key_fn({'shares': 100, 'price': 31.1, 'name': 'IBM'}) -> 31.1
结论:每个排序的项目调用一次键函数。
我遇到了以下代码并且它正在运行fine.Though我在其他问题中查找了 lambda 函数,但没有找到相关答案
In[9]: portfolio=[
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'IAM', 'shares': 100, 'price': 41.1},
{'name': 'IBM', 'shares': 100, 'price': 71.1} ,
{'name': 'IBM', 'shares': 100, 'price': 31.1}
]
In [10]: s = sorted(portfolio,key = lambda s : s['price'] )
Out[10]: s
[{'name': 'IBM', 'price': 31.1, 'shares': 100},
{'name': 'IAM', 'price': 41.1, 'shares': 100},
{'name': 'IBM', 'price': 71.1, 'shares': 100},
{'name': 'IBM', 'price': 91.1, 'shares': 100}]
问题:
- 每次从列表中调用字典元素时,lambda 函数是否被调用到 return 价格? lambda 只调用一次 ?
- 如果有人能在这里解释排序的整个工作原理,那将非常有帮助
好吧,让我们试试吧:
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'IAM', 'shares': 100, 'price': 41.1},
{'name': 'IBM', 'shares': 100, 'price': 71.1} ,
{'name': 'IBM', 'shares': 100, 'price': 31.1}
]
def key_fn(s):
print("called key_fn({}) -> {}".format(s, s['price']))
return s['price']
s = sorted(portfolio, key=key_fn)
产生
called key_fn({'shares': 100, 'price': 91.1, 'name': 'IBM'}) -> 91.1
called key_fn({'shares': 100, 'price': 41.1, 'name': 'IAM'}) -> 41.1
called key_fn({'shares': 100, 'price': 71.1, 'name': 'IBM'}) -> 71.1
called key_fn({'shares': 100, 'price': 31.1, 'name': 'IBM'}) -> 31.1
结论:每个排序的项目调用一次键函数。