我在下面第 167 行部分開始時(shí)遇到問題的區(qū)域:for scanner.Scan() { //dateCollection := make(map[string]int) m := tag.FindString(scanner.Text()) if m != "" { // stop races Lock.Lock() arr := strings.Split(m, "/") taghash := strings.Join(arr, "_") taghash = strings.TrimLeft(taghash, "_") //data[taghash]++ m = date.FindString(scanner.Text()) if m != "" { hour := m data[taghash] = make(map[string]int) data[taghash][hour]++ } Lock.Unlock() } } fmt.Println(file) os.Remove(file) if err := scanner.Err(); err != nil { log.Fatal(err) }我在主函數(shù)中打印值時(shí)得到的輸出fstvt1_ros_300x600_pp8_1 T07 1我期待一個(gè)看起來像這樣的輸出:fstvt1_ros_300x600_pp8_1T00 213434T01 23432T02 3324T03 324T04 324T05 0 ...(this isn't real data)我想要做的是: 我有一個(gè)數(shù)據(jù)映射,var data = make(map[string]map[string]int)其鍵等于 taghash,例如fstvt1_ros_300x600_pp8_1. 該值是數(shù)據(jù)映射。該映射的鍵值應(yīng)為字符串和整數(shù)。我想要多張地圖。每個(gè)鍵一個(gè)... T01, T02 .. 當(dāng)前輸出的是我正在迭代的最后一個(gè)項(xiàng)目中的最后一個(gè)項(xiàng)目,而不是每個(gè)標(biāo)簽哈希的鍵和值的集合。我如何制作,而不是覆蓋數(shù)據(jù),而是添加新的鍵值 T01、T02 .. 并且如果 taghash 和小時(shí)是增加該特定對(duì)象的一些。我目前使用的代碼行:T01, T02..data[taghash][hour]++如果 taghash 和小時(shí)存在,那么它應(yīng)該增加。如果 taghash 和 hour 不存在,則創(chuàng)建 taghash 并添加新鍵和增量。
1 回答

慕哥6287543
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
錯(cuò)誤來自
data[taghash] = make(map[string]int)
data[taghash]每次通過時(shí),這都會(huì)設(shè)置為新分配的地圖。這絕對(duì)不是你想要做的。反而:
if _, ok := data[taghash]; !ok {
// data[taghash] does not exist -- create it!
data[taghash] := make(map[string]int)
}
data[taghash][hour]++
這相當(dāng)于:
# Python
data.setdefault(taghash, {}).setdefault(hour, 0) += 1
或者
if taghash not in data:
data[taghash] = {}
if hour not in data[taghash]:
data[taghash][hour] = 1
else:
data[taghash][hour] += 1
- 1 回答
- 0 關(guān)注
- 208 瀏覽
添加回答
舉報(bào)
0/150
提交
取消