Dictionary 在字典中找到最小的数字

Dictionary 在字典中找到最小的数字,dictionary,boolean,swift,Dictionary,Boolean,Swift,我想在我的字典里找到一个最小的也是假的数字。我也在使用新的Swift语言。我怎样才能做到这一点 var firstRow = [1: false, 2: false, 3: false, 4: false, 5: false, 6: false] for (number, bool) in firstRow { if bool == false { // NSLog("\(number)")

我想在我的字典里找到一个最小的也是假的数字。我也在使用新的Swift语言。我怎样才能做到这一点

var firstRow = [1: false, 2: false, 3: false, 4: false, 5: false, 6: false]




  for (number, bool) in firstRow {

            if bool == false {

              //  NSLog("\(number)")


                for i = number; i > 0; i-- {
                    if number <= smallest {

                        smallest = number

                        NSLog("\(smallest)")
                    }

                }
               // NSLog("\(bool, number)")
            }
      }
var firstRow=[1:false,2:false,3:false,4:false,5:false,6:false]
对于第一行中的(数字,布尔){
如果bool==false{
//NSLog(“\(编号)”)
对于i=number;i>0;i--{
如果数字在这里:

var smallest = 10000000000
for (number, bool) in firstRow {

        if bool == false && number < smallest{
             smallest = number

        }
}
println("\(smallest)")
var最小值=1000000000
对于第一行中的(数字,布尔){
如果bool==false&&number<最小值{
最小=数量
}
}
println(“\(最小)”)

如果您严格使用Swift,我会在添加更改时使用ASKASK:

let firstRow = [1: true, 2: false, 3: true]

var smallest = Int.max

for (number, bool) in firstRow {
    if bool == false && number < smallest {
        smallest = number
    }
}
Swift中的数组上有一个内置的
filter()
方法,因此我会使用如下方法:

let falseNumbers: Int[] = firstRow.keys.filter { firstRow[$0] == false }
let smallestFalseNumber: Int = sort(falseNumbers)[0]
上述假设在
firstRow
字典中至少有一个假值。为确保:

if find(firstRow.values, false) {
    // The above code
}

您可以使用内置的min(by:)方法,使用key或dictionary中的value获取最小值

let minmum = firstrow.min { a, b in
    return a.value < b.value
 }
 // use minimum object to print key and value 
 print(minimum.key)
 print(minimum.value)
让minmum=firstrow.min{a,b在
返回a.value
为什么要使用字典而不是数组?整个内部循环做什么?!我想将数字与布尔关联为什么不使用布尔数组?你知道数组是什么吗?你可能想将
最小的
更改为
UInt8.maxValue()
为什么UInt8?它的最大值不是只有255吗?@ASKASK或
typeOfNumbersInArray.maxValue()
255井就足够了anyway@BrianTracy是对的,也是错的-应该是
var minimate=Int.max
,不需要猜测正确的大值。你建议手工排序表格?为什么不直接手工排序,然后只说minimate=2?一点也不…我建议如果我们知道如何使用严格递增的整数将成员推送到集合中,我们利用其中一个有序数据结构,这样我们就可以打破搜索,确信我们已经找到了最小的数目;在任何情况下,看起来这里有几个选项,我肯定其中一个已经结束我的意思是,如果我们知道成员将被推到集合中使用严格递增的整数”--呃,也称为“排序”。就像我说的,手动排序…这是你“事先知道”的唯一方法数据被排序而不必排序。因为OP没有说这是可以保证的,所以我将省略这个中断。希望苹果会向他们的集合库中添加功能设施(如果他们还没有),这样你就可以像在其他现代语言中一样说minimest=firstRow.min({$0.1==false})。
let minmum = firstrow.min { a, b in
    return a.value < b.value
 }
 // use minimum object to print key and value 
 print(minimum.key)
 print(minimum.value)