【问题标题】:Get Dictinct values from swift dictionary but distinct only on one key [closed]从快速字典中获取不同的值,但仅在一个键上不同[关闭]
【发布时间】:2017-01-02 11:07:41
【问题描述】:

我有一系列这样的字典:

"subtitles": [{
                "index": 0,
                "language": "eng",
                "name": ""
            }, {
                "index": 1,
                "language": "eng",
                "name": ""
            }, {
                "index": 2,
                "language": "rus",
                "name": ""
            }, {
                "index": 3,
                "language": "chi",
                "name": ""
            }, {
                "index": 4,
                "language": "est",
                "name": ""
            }, {
                "index": 5,
                "language": "hin",
                "name": ""
            }, {
                "index": 6,
                "language": "ind",
                "name": ""
            }, {
                "index": 7,
                "language": "kor",
                "name": ""
            }, {
                "index": 8,
                "language": "lav",
                "name": ""
            }, {
                "index": 9,
                "language": "lit",
                "name": ""
            }, {
                "index": 10,
                "language": "msa",
                "name": ""
            }, {
                "index": 11,
                "language": "chi",
                "name": ""
            }, {
                "index": 12,
                "language": "pol",
                "name": ""
            }, {
                "index": 13,
                "language": "tam",
                "name": ""
            }, {
                "index": 14,
                "language": "tel",
                "name": ""
            }, {
                "index": 15,
                "language": "tha",
                "name": ""
            }, {
                "index": 16,
                "language": "ukr",
                "name": ""
            }, {
                "index": 17,
                "language": "vie",
                "name": ""
            }]

我只想要语言键的唯一性。在上面的数组中,第一个两个元素具有语言“eng”,但我只希望第一个或第二个包含在过滤数组中。

【问题讨论】:

  • 我的车道上有一堆砾石,我想去别的地方

标签: ios arrays swift dictionary


【解决方案1】:

试试这个解决方案。希望对您有所帮助。

let subtitleArray:[[String:Any]] = inputDictionary["subtitles"] as! [[String:Any]]     

    var languageArray = [String]()

    var filteredSubtitleArray = subtitleArray.filter { (dict) -> Bool in

            guard let lang = dict["language"] as? String,languageArray.contains(lang) == false else {
                return false
            }

            languageArray.append(lang)

            return true
        }

【讨论】:

  • 非常感谢您的回复。我会试试这个。
【解决方案2】:

你可以减少你的数组忽略重复的语言:

let reducedSubtitles = dict["subtitles"]!.reduce([[String: Any]]()) { (result, current) in
    if result.contains(where: { $0["language"] as? String == current["language"] as? String }) {
        return result
    }

    return result + [current]
}

【讨论】:

  • 非常感谢 simpleBob。这解决了我的目的。
  • 如果我想计算以上示例中所有不同语言的数量,我需要做哪些更改?比方说,我想要像 eng=2 次这样的信息......等等所有不同的价值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
相关资源
最近更新 更多