快速返回随机字典项

Posted

技术标签:

【中文标题】快速返回随机字典项【英文标题】:return random dictionary items in swift 【发布时间】:2014-11-10 20:15:07 【问题描述】:

到目前为止,我正在尝试返回一个随机名称,并且该函数的随机电子邮件已经到达,但我想知道我应该在这里返回什么,因为我想返回一个元组,它需要是 2 个字符串值我需要从我的函数中随机获取

func randomAuthor () -> (name : String, email : String) 

    struct Author 

        var name : String
        var email : String

    

    let firstAuthor = Author(name: "jon", email: "jonsEmail")
    let secondAuthor = Author(name: "richard", email: "richardsEmail")
    let thirdAuthor = Author(name: "steve", email: "stevesEmail")
    let fourthAuthor = Author(name: "simon", email: "simonsEmail")
    let fifthAtouh = Author(name: "wes", email: "wesEmail")

    var dictionary = [firstAuthor.name : firstAuthor.email, secondAuthor.name : secondAuthor.email, thirdAuthor.name : thirdAuthor.email, fourthAuthor.name : fourthAuthor.email, fifthAuthor.name : fithAtouh.email]

    var unsignedDictionaryCount = UInt32(dictionary.count)
    var unsignedRandom = arc4random_uniform(unsignedDictionaryCount)
    var random = unsignedRandom


    return()


任何帮助表示赞赏 谢谢

【问题讨论】:

最好使用数组而不是字典,然后使用随机索引来获取数组元素之一... 谢谢 需要特别是一本字典不幸的是关于如何用我所拥有的东西做到这一点的任何其他想法?谢谢 获取随机索引。使用该索引来获取字典的allKeys 中的对象。然后你可以从那个随机键中获取值。 let index: Int = Int(arc4random_uniform(UInt32(dictionary.count)) 类似这样的东西?如何通过我的元组返回类型返回 2 个字符串?谢谢 【参考方案1】:

通过几个步骤从字典中获取随机值:

    创建您的词典 使用arc4random_uniform 随机获取Int 用这个随机的Int得到一个随机密钥(使用keys),并得到它的值

    归还它们,你就完成了!

    var dictionary : [String:String] =  [firstAuthor.name : firstAuthor.email, secondAuthor.name : secondAuthor.email, thirdAuthor.name : thirdAuthor.email, fourthAuthor.name : fourthAuthor.email]
    let index: Int = Int(arc4random_uniform(UInt32(dictionary.count)))
    let value = Array(dictionary.values)[index]
    let key = Array(dictionary.keys)[index]
    let value = dictionary[key]
    return (key, value!)
    

【讨论】:

【参考方案2】:

使用您的随机整数作为dictionary.keys 的索引。这将为您获取name,您可以使用它来查找您的email

【讨论】:

以上是关于快速返回随机字典项的主要内容,如果未能解决你的问题,请参考以下文章

字典方法

内存不足的内存管理:查找和跟踪随机函数返回值的重复项

在随机列表项上添加类

python DNS字典。 __getitem__任何主机,它从系统DNS返回一个随机的ipaddress,表示TTL

随机快速排序

需要帮助返回 ms-access 测试库的随机顺序多项选择答案