我有一個字串和 int 陣列的映射,如下所示正在填充 -
var customerCatalog = make(map[string][]int64)
for ... {
var data = "....."
for _, catalogId := range data.Catalogs {
var ok bool
var keys []int64
var tmp interface{}
cusId := strconv.FormatInt(int64(catalogId), 10)
if tmp, ok = customerCatalog[cusId]; !ok {
keys = []int64{}
} else {
keys = tmp.([]int64)
}
keys = append(keys, data.ProductId)
customerCatalog[cusId] = keys
}
}
這data.Catalogs是 int32 陣列。并且data.ProductId是int64。所以我需要遍歷陣列并用每個鍵的唯一陣列值data.Catalogs填充我的地圖。customerCatalogdata.ProductId
如您所見,我將 map 的值作為整數陣列,其中可以有重復的值。我想確保映射中特定鍵的整數陣列應該具有唯一值。由于 go 不支持泛型,所以這就是為什么我們沒有設定所以我們應該如何在這里處理這種情況?
uj5u.com熱心網友回復:
由于 go 不支持泛型,所以我們沒有設定
集合通常使用哈希表的鍵來實作;忽略這些值。
在 Go 中,使用map[int64]bool.
// Check if an array contains only unique values.
func is_unique(array []int64) bool {
var unique = map[int64]bool{}
for _,v := range(array) {
if unique[v] {
return false
}
unique[v] = true
}
return true
}
// Return a deduplicated array
func uniq(array []int64) []int64 {
var unique = map[int64]bool{}
keys := make([]int64, 1)
for _,v := range(array) {
if _, ok := unique[v]; !ok {
keys = append(keys, v)
unique[v] = true
}
}
return keys
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/438553.html
上一篇:在字典中加載CSV檔案,然后為每個csv檔案Python創建資料框
下一篇:按索引更改字典的字典鍵
