是否有模拟 - (NSArray*)keysSortedByValueUsingSelector:(SEL)比较器在swift中?
如何在不转换为NSDictionary的情况下执行此操作?
我试过这个,但似乎不是一个好的解决方案.
var values = Array(dict.values)
values.sort({
$0 > $1
})
for number in values {
for (key, value) in dict {
if value == number {
println(key + " : \(value)");
dict.removeValueForKey(key);
break
}
}
}
Run Code Online (Sandbox Code Playgroud)
例:
var dict = ["cola" : 10, "fanta" : 12, "sprite" : 8]
dict.sortedKeysByValues(>) // fanta (12), cola(10), sprite(8)
Run Code Online (Sandbox Code Playgroud) 首先,这个问题不是"0美元的意思".我在swift文档中了解到$ 0就像索引一样.
我的问题是"如何numbers.sort { $0 > $1 }用于实现排序功能".我numbers.sort { $0 > $1 }在其他一些网站上搜索过这种语法,比如这个.它显然不是当前的版本.所以我还是无法理解它的含义.
print(numbers) //[20, 19, 1, 12]
let sortedNumbers = numbers.sort { $0 > $1 }
print(sortedNumbers) //[20, 19, 12, 1]
Run Code Online (Sandbox Code Playgroud)
有人可以为我解释上面这段简单的代码吗?就像这个简单的代码如何$0 > $1实现sort函数一样,将数字从大到小排序.
我知道一些关于索引,这个$ 0看起来像索引,但它只有$ 0和$ 1两个索引.那怎么能用到4个数字呢?根据我之前在C++中的知识,我无法理解其中的原理.
请尽可能具体说明您的答案.谢谢!
-----------------以下是编辑的额外部分-------------------
我不知道stackoverflow是否允许我像这样编辑我的问题,但是这个额外的部分太长了,所以我不能在评论中添加它.@pbodsk @Paul Richter
所以swift中的sort()语法使用快速排序来处理排序函数?
其实我的问题更多的是关于"什么是工作原理的sort{$0 > $1}".我知道你的意思,我认为这与swift 2.1文件所说的相似,但你的回答并不是我真正想知道的.对不起,我的英文表达不是很好.让我尝试另一种方式.
当我之前学习C++时,总会有一些文档来解释函数的操作原理是什么,或者这个函数(如此处的sort()如何)在后台运行.Sort()这里需要比较第一次和第二次交换.在C++中,它就像
if numbers[1] < numbers[2]{ //just consider …Run Code Online (Sandbox Code Playgroud) 您好我在Xcode9尝试了打印字典项目.像这样:
var items = ["Bear":"0", "Glass":"1", "Car":"2"]
for (key,value) in items{
print("\(key) : \(value)")
}
Run Code Online (Sandbox Code Playgroud)
输出:
Glass : 1
Bear : 0
Car : 2
Run Code Online (Sandbox Code Playgroud)
为什么输出不是这样的:熊:0,玻璃:1,汽车:2我不明白这个输出的原因.
检查以下字典:
var testDict: [String : Int] = [
"a" : 1,
"b" : 2,
"c" : 3,
"d" : 4
]
Run Code Online (Sandbox Code Playgroud)
现在,遍历字典的键:
for i in testDict.keys {
print(i)
}
Run Code Online (Sandbox Code Playgroud)
这将产生以下输出:
百特
但是,预期的输出将是编码顺序中的键:
A B C D
因为不是这种情况,所以我假设键已排序。如果是这样,如何对它们进行排序,更重要的是,如何将它们返回到编写时的顺序?