对元素进行排序和组合使其独一无二
Sort and combine elements to be unique
我有一堆代币存储在 combinedCoinsFromAllWalles
中,我按谁包含最大货币价值对它们进行排序,如下所示:
let sortedCoins = combinedCoinsFromAllWalles.sorted() { Double([=10=].token!.quote!) > Double(.token!.quote!) }
问题是某些标记按名称重复,例如,在该排序中我可以在 [=13=].token!.name
上有 2 个具有相同名称的标记
同时组合这些相似的代币并增加它们的价值的最有效方法是什么?像这样:
token A (named BTC)
token B (named BTC)
token C (named ETH)
我想在筛选时对令牌 A 和 B 引用 ([=14=].token!.quote! + [=14=].token!.quote!
) 求和。
如何以最有效的方式做到这一点?
您的示例中的第一种排序是一种浪费,因为您没有先将相似硬币的所有不同来源组合起来,然后顺序可能会改变。
你应该:
- 总硬币价值
- 按所需顺序排序
执行此操作的一种简单方法是创建字典,在遍历数据时添加新硬币或求和。然后将字典转换回数组并按您喜欢的方式排序。
例如:
var dict: [String: Float] = []
for each in combinedCoinsFromAllWalles {
if dict.contains(each.token) {
dict[each.token] += each.quote
}else{
dict[each.token] = each.quote
}
}
let sortedCoinValueArray = dict.sorted(by: [=10=].1 < .1)
生成的数组是 key-value 对的数组,因此您可以像这样迭代它:
for (key, value) in sortedCoinValueArray {
print("${key}: ${value}"
}
我有一堆代币存储在 combinedCoinsFromAllWalles
中,我按谁包含最大货币价值对它们进行排序,如下所示:
let sortedCoins = combinedCoinsFromAllWalles.sorted() { Double([=10=].token!.quote!) > Double(.token!.quote!) }
问题是某些标记按名称重复,例如,在该排序中我可以在 [=13=].token!.name
同时组合这些相似的代币并增加它们的价值的最有效方法是什么?像这样:
token A (named BTC)
token B (named BTC)
token C (named ETH)
我想在筛选时对令牌 A 和 B 引用 ([=14=].token!.quote! + [=14=].token!.quote!
) 求和。
如何以最有效的方式做到这一点?
您的示例中的第一种排序是一种浪费,因为您没有先将相似硬币的所有不同来源组合起来,然后顺序可能会改变。
你应该:
- 总硬币价值
- 按所需顺序排序
执行此操作的一种简单方法是创建字典,在遍历数据时添加新硬币或求和。然后将字典转换回数组并按您喜欢的方式排序。
例如:
var dict: [String: Float] = []
for each in combinedCoinsFromAllWalles {
if dict.contains(each.token) {
dict[each.token] += each.quote
}else{
dict[each.token] = each.quote
}
}
let sortedCoinValueArray = dict.sorted(by: [=10=].1 < .1)
生成的数组是 key-value 对的数组,因此您可以像这样迭代它:
for (key, value) in sortedCoinValueArray {
print("${key}: ${value}"
}