Swift 快速字典排序
我只是想知道字典在Swift中是如何分类的。e、 g.以下代码Swift 快速字典排序,swift,sorting,dictionary,Swift,Sorting,Dictionary,我只是想知道字典在Swift中是如何分类的。e、 g.以下代码 var occupations = [ "Malcolm": "Captain", "Kaylee": "Mechanic"] occupations["Jayne"] = "Pirate" for (name, occupation) in occupations{ print("\(name) is a \(occupation)") } 结果是这样的 Kaylee is a Mechanic Malcolm is a
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic"]
occupations["Jayne"] = "Pirate"
for (name, occupation) in occupations{
print("\(name) is a \(occupation)")
}
结果是这样的
Kaylee is a Mechanic
Malcolm is a Captain
Jayne is a Pirate
我的问题是正确的。循环是如何决定哪个名称(或键)将首先通过上述循环的?我认为您正在寻找类似的内容:
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic"]
occupations["Jayne"] = "Pirate"
let unsortedKeys = occupations.keys //get dictionary keys
let sortedKeys = unsortedKeys.sorted(by: <) //sort dictionary keys
for key in sortedKeys {
print("\(key) is a \(occupations[key])")
}
var职业=[
“马尔科姆”:“船长”,
“Kaylee”:“机械师”]
职业[“Jayne”]=“海盗”
让unsortedKeys=职业。关键字//获取字典关键字
让sortedKeys=unsortedKeys.sorted(按:我想你在寻找这样的东西:
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic"]
occupations["Jayne"] = "Pirate"
let unsortedKeys = occupations.keys //get dictionary keys
let sortedKeys = unsortedKeys.sorted(by: <) //sort dictionary keys
for key in sortedKeys {
print("\(key) is a \(occupations[key])")
}
var职业=[
“马尔科姆”:“船长”,
“Kaylee”:“机械师”]
职业[“Jayne”]=“海盗”
让unsortedKeys=职业。关键字//获取字典关键字
让sortedKeys=unsortedKeys。已排序(按:来自Apple:
字典存储相同类型的键之间的关联和
集合中没有定义顺序的相同类型的值。每个
值与唯一键相关联,该键用作
字典中的值。与数组中的项不同,数组中的项
字典没有指定的顺序
默认情况下,字典数据结构具有未指定的顺序,这意味着每次遍历字典时,可能会有不同的排序。但是,您可以根据字典的键或值进行排序,它们都表示为数组
那么,假设您希望根据键进行排序:
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic"]
occupations["Jayne"] = "Pirate"
for key in occupations.keys.sort() {
print("KEY: \(key) VALUE: \(occupations[key])")
}
控制台应显示-根据键排序-:
键:Jayne值:可选(“海盗”)
键:Kaylee值:可选(“机械”)
键:马尔科姆值:可选(“船长”)
请注意,这些值是可选的,您可能需要“可选绑定”它们
希望这有帮助。来自苹果:
字典存储相同类型的键之间的关联和
集合中没有定义顺序的相同类型的值。每个
值与唯一键相关联,该键用作
字典中的值。与数组中的项不同,数组中的项
字典没有指定的顺序
默认情况下,字典数据结构具有未指定的顺序,这意味着每次遍历字典时,可能会有不同的排序。但是,您可以根据字典的键或值进行排序,它们都表示为数组
那么,假设您希望根据键进行排序:
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic"]
occupations["Jayne"] = "Pirate"
for key in occupations.keys.sort() {
print("KEY: \(key) VALUE: \(occupations[key])")
}
控制台应显示-根据键排序-:
键:Jayne值:可选(“海盗”)
键:Kaylee值:可选(“机械”)
键:马尔科姆值:可选(“船长”)
请注意,这些值是可选的,您可能需要“可选绑定”它们
希望这能有所帮助。:“字典在集合中存储相同类型的键和相同类型的值之间的关联,但没有定义顺序。”仔细阅读哈希表,这是Swift的字典
用来存储元素的。元素在表中的位置主要取决于它的哈希和表中的桶数,其次取决于哈希表如何处理冲突。如果你只是好奇,那没关系,但记住永远不要编写代码这取决于字典中的顺序。由于没有定义顺序,他们有权更改操作系统/语言版本之间的顺序:“字典在没有定义顺序的集合中存储相同类型的键和相同类型的值之间的关联。”仔细阅读哈希表,这是Swift的字典
用来存储元素的。元素在表中的位置主要取决于它的哈希和表中的桶数,其次取决于哈希表如何处理冲突。如果你只是好奇,那没关系,但记住永远不要编写代码这取决于字典中的顺序。由于没有定义顺序,他们完全有权更改操作系统/语言版本之间的顺序。未指定顺序与无序不同–字典有顺序(只是未指定),因此,重复迭代给定字典不会产生不同的元素顺序–您将以相同的顺序获得相同的元素。但是,添加或删除元素可以更改此顺序(同样,顺序的更改方式未指定)@Hamish谢谢你的注释,答案已经编辑好了。未指定的顺序与未指定的顺序不同——字典有顺序(只是未指定),因此,反复迭代给定的字典不会产生不同的元素顺序–您将以相同的顺序获得相同的元素。但是,添加或删除元素可以更改此顺序(同样,顺序的更改方式未指定)。@Hamish感谢您的说明,答案已编辑。