我试图找出最好的方式Swift
来添加值到Array
这是一个Value
在Dictionary
。我想建立一个按联系人名字的首字母排序的联系人字典。例如[A:[Aaron,Adam等…],B:[Brian,Brittany等],…]
我发现此功能:
updateValue(_:forKey:)
并尝试在循环中使用它:
for contact in self.contacts.sorted() {
self.contactDictionary.updateValue([contact], forKey: String(describing: contact.characters.first))
}
但是当我尝试使用它时,它用一个新数组替换了现有数组。我知道我可以手动检查字典中的键是否存在,如果存在,则检索数组,然后附加一个新值,否则添加新的键/值对,但是我不确定Swift是否提供了更简单的方法/更好的方法。
任何见解将不胜感激!
您可以使用reduce(into:)
方法(Swift4),如下所示:
let contacts = ["Aaron", "Adam", "Brian", "Brittany", ""]
let dictionary = contacts.reduce(into: [String:[String]]()) { result, element in
// make sure there is at least one letter in your string else return
guard let first = element.first else { return }
// create a string with that initial
let initial = String(first)
// initialize an array with one element or add another element to the existing value
result[initial] = (result[initial] ?? []) + [element]
}
print(dictionary) // ["B": ["Brian", "Brittany"], "A": ["Aaron", "Adam"]]
如果您使用的是Swift3或更早版本,则需要在闭包内部创建一个可变的结果字典:
let contacts = ["Aaron", "Adam", "Brian", "Brittany", ""]
let dictionary = contacts.reduce([String:[String]]()) { result, element in
var result = result
guard let first = element.first else { return result }
let initial = String(first)
result[initial] = (result[initial] ?? []) + [element]
return result
}
print(dictionary) // ["B": ["Brian", "Brittany"], "A": ["Aaron", "Adam"]]
请注意,结果未排序。字典是无序集合。如果需要对字典进行排序并返回(键,值)元组的数组,则可以按以下方式使用按键排序:
let sorted = dictionary.sorted {$0.key < $1.key}
print(sorted)
“ [[(键:” A“,值:[” Aaron“,”亚当“]),(键:” B“,值:[” Brian“,” Brittany“])] \ n”
问题内容: 如果满足某些条件,您将如何向字典中的值添加一个常数,例如1。 例如,如果我有字典: 如果我只是想将整数1添加到字典中的每个值,那么它将dict这样更新: 当我使用以下代码(其中Cur_FID是字典“ 0”中的第一个)时,它的值为5?它应该给我4。 我想为所有值加1,但是在第一次字典更新做一些奇怪的操作时就停在这里。 问题答案: 一种简单的方法是使用对象,在大多数情况下,您可以像普通字典
问题内容: Swift中的数组支持+ =运算符,可将一个数组的内容添加到另一个数组。有没有简单的方法可以做到这一点的字典? 例如: 问题答案: 您可以为定义运算符,例如
问题内容: 我想将一个项目添加到Python中的现有字典中。例如,这是我的字典: 我想添加一个新项目,例如: 我该如何实现? 问题答案: default_data[‘item3’] = 3 像py一样容易。 另一个可能的解决方案: 如果您想一次插入多个项目,这很好。
问题内容: 我想将属性值添加到查询中的xml字段中。我的例子如下 我希望我的最终结果看起来像这样 问题答案: 如果需要选择数据,则可以使用xquery: 甚至更简单:
问题内容: 我想自动将键添加到Python字典(如果还不存在)。例如, 如果密钥不存在,如何自动创建密钥? 问题答案: 使用:
在我开始之前--我看了以下链接,没有一个对我起作用(我的假设是我做错了什么): > https://appmediation.com/how-to-add-local-libraries-to-gradle/ 如何向build.gradle文件添加本地.jar文件依赖项? 在我的Gradle Java项目中使用本地jar作为依赖项 如何向build.gradle.kt文件添加本地.jar文件依赖项