假設我有一個Tcl字典。我想要最快的方法來獲取字典的最後輸入的鍵(不是值)。 理論上,我可以使用:lindex [ dict keys $dict ] end
有沒有人知道別的,這是更快?Tcl中最後一個字典的最快路徑
1
A
回答
1
這是相當快:
% set data {a 1 b 2 c 3}
a 1 b 2 c 3
% proc p1 {} {dict get $::data [lindex [dict keys $::data] end]}
% time {p1} 100000
1.87782 microseconds per iteration
但是你可以通過記住最後的關鍵刮掉一微秒:
oo::object create mydict
oo::objdefine mydict {
variable data last
method add args {
lappend data {*}$args
set last [lindex [dict keys $data] end]
}
method getLast {} {
dict get $data $last
}
}
% mydict add a 1 b 2 c 3
c
% time {mydict getLast} 100000
0.82731 microseconds per iteration
文檔: create (method of oo::class
), dict, lappend, lindex , method (object configuration subcommand), proc, oo::objdefine (object definition command), oo::object (class of objects), set, time, variable (object slot subcommand), {*} (syntax)
1
我看到[lindex $data end-1]
要快。
tclsh last.tcl
time_list : 1.0693949999999999 microseconds per iteration
time_dict : 279.470543 microseconds per iteration
last.tcl
set data [dict create]
for {set i 0} {$i < 10000} {incr i} {
dict set data "key_$i" $i
}
set time_dict [time {
set last_key [lindex [dict keys $data] end]
} 1000]
set time_list [time {
set last_key [lindex $data end-1]
} 1000]
puts "time_list : $time_list"
puts "time_dict : $time_dict"
相關問題
- 1. 確定字典中從x鍵到y鍵的最快路徑?
- 2. Python字典中的最後一個鍵
- 3. 刪除最後一個路徑組件在一個字符串
- 4. 檢索最後一個子字符串和路徑中的最後一個子字符串
- 5. Powershell;從每個路徑中刪除字符串中的最後一個'/'字符
- 6. 獲取路徑的最後一個字符串
- 7. 獲取路徑的最後一個字段?
- 8. 最快的方式獲取最後一個文件夾的路徑也包括一個文件名?
- 9. 如何測試URL路徑(最後一個文件夾)+字符
- 10. 字典中最後一個鍵值對之後的逗號
- 11. 加速點最快的路徑
- 12. 重寫只有一個子路徑的最快方法
- 13. 刪除PHP文件路徑中的最後一個段
- 14. 如何獲取URL中的最後一個路徑?
- 15. 如何獲得neo4j路徑中的最後一個節點?
- 16. 如何刪除Swift中String的最後一個路徑組件?
- 17. C#在字典中搜索字典的最快方法
- 18. 多於一個的最短路徑
- 19. 最短路徑更快 - SPFA算法?
- 20. 最快的方法,使一個字典一個逗號分隔的字符串
- 21. 刪除字符串中最後一個空格後的最後一個字符
- 22. 加載字典的最快方式
- 23. 尋找url路徑最後部分的最快方法是什麼?
- 24. 從文件路徑中取出最後一個文件夾
- 25. 從路徑中刪除最後一個文件夾
- 26. 如何從URL的最後一個路徑分割剩餘路徑
- 27. 獲取字典中的最後一個元素?
- 28. 檢索字典中最後一個鍵的值
- 29. 在路徑中輸入最後一個目錄,並在目錄中輸入最後一個文件
- 30. PostgreSQL的查詢來獲得最後一個節點的路徑
這很可能是關於速度最快;數據結構有更快的信息,但據我所知,沒有人真的需要這種操作。 –