Ala*_*lan 2 python sorting python-3.x
我对 Python 有点陌生。我看到了以下代码,但不明白如何使用“列表”对字符串进行排序。
lookup = defaultdict(list)
## Filling the lookup
# .....
# .....
inputs = ['abc', 'acb', 'acb'] # a list of strings
result = ''.join(sorted(inputs[0], key=lookup.get))
Run Code Online (Sandbox Code Playgroud)
我不明白的是最后一行是关键部分。我知道它根据列表中的值进行字典排序。如果有人可以解释它或将此步骤分解为更具可读性的解决方案,我将不胜感激。
例如,如果查找表如下所示:
{'a' : [-3, 0, 0], 'b': [0, -1, -2], 'c': [0, -2, -1]}
Run Code Online (Sandbox Code Playgroud)
那么结果将是这个 acb
所述key给参数sorted的意思是“假装的值是该函数的而不是实际的值的结果。” 因此,当您'abc'使用您提供的查找表进行排序时,它会执行以下操作:
# [1st, 2nd, 3rd] sort order
lookup.get('a') # [ -3, 0, 0]
lookup.get('b') # [ 0, -1, -2]
lookup.get('c') # [ 0, -2, -1]
Run Code Online (Sandbox Code Playgroud)
然后它将计算出上述值的排序顺序。列表按字典顺序排序意味着首先比较第一个元素,就像在字典中一样(“aardvark”在“beaver”之前,也在“ant”之前)。
查看第一个元素 (-3, 0, 0) 后,我们知道 'a' 的值最小,但我们不知道 'b' 和 'c' 中的哪个更小。但是一旦我们看到第二个元素 (0, -1, -2),我们就知道 'c' 更小,所以最终顺序是 'acb',而无需咨询第三个元素 (0, -2, -1 )。
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |