【问题标题】:How to iterate through an array and assign each item to each dictionary key如何遍历数组并将每个项目分配给每个字典键
【发布时间】:2019-09-19 18:35:34
【问题描述】:

我有一个数组和一个字典

var list = ["A", "B", "C","D"]

var dict = [
    "Chapter 1 Body" : "",
    "Chapter 2 Body" : "",
    "Chapter 3 Body" : "",
    "Chapter 4 Body" : ""
]

我想遍历列表数组并将每个项目分配给字典的每个键。这是我打印 dict 时的预期输出:

["Chapter 1 Body": "A", "Chapter 2 Body": "B", "Chapter 3 Body": "C", "Chapter 4 Body": "D"]

注意:顺序应与打印输出相同。

【问题讨论】:

  • 字典没有任何顺序。

标签: arrays swift dictionary


【解决方案1】:
var i = 0
for k in dict.keys.sorted() {
    dict[k] = list[i]
    i += 1
}

【讨论】:

  • 嘿,问题是这个没有排序
  • @SMALLworld 对不起。固定。
  • 哦,天哪,还有一个问题,是否可以按照我在问题中显示的顺序打印它?
  • @SMALLworld 词典。有。不,订购。您不应该关心其内容的打印顺序。这是毫无意义和无关紧要的。
  • @SMALLworld 如果您使用字典,则不能,但如果您使用 JSON,例如(来自外部库),那么它是可能的。
【解决方案2】:

您可以使用zip 对键进行排序(如果字母排序顺序是字典键的正确顺序)

dict = zip(dict.keys.sorted(), list).reduce(into: [:]) {$0[$1.0] = $1.1} 

如果键是按其他顺序排序的,那么您需要将它们放在一个数组中,而不是按照正确的顺序,但解决方案基本相同

var chapters = ["Chapter 1 Body", "Chapter 2 Body", "Chapter 3 Body", "Chapter 4 Body"]
let dict = zip(chapters, list).reduce(into: [:]) {$0[$1.0] = $1.1} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多