Tôi muốn sử dụng Cấu trúc như HashTable. Có cấu trúc tương tự trong Wolfram Mathematica không?Có cấu trúc HashTable trong Wolfram Mathematica không?
Trả lời
Cập nhật: Mathematica phiên bản 10 đã giới thiệu cấu trúc dữ liệu Association
(tutorial).
Có một số khả năng. Khả năng dễ nhất, hoạt động tốt nếu bạn không cần phải thêm hoặc xóa các khóa khỏi bảng hoặc thay đổi giá trị được kết hợp của chúng, là xây dựng danh sách các quy tắc có khóa ở phía bên trái và giá trị ở bên phải bên cạnh và sử dụng Dispatch
trên đó.
Nếu bạn cần thay đổi các mục nhập trong bảng của mình, bạn có thể sử dụng DownValues
của biểu tượng dưới dạng bảng băm. Điều này sẽ hỗ trợ tất cả các hoạt động thường sử dụng với các bảng băm. Đây là cách đơn giản nhất để làm điều đó:
(* Set some values in your table.*)
In[1]:= table[a] = foo; table[b] = bar; table[c] = baz;
(* Test whether some keys are present. *)
In[2]:= {ValueQ[table[a]], ValueQ[table[d]]}
Out[2]:= {True, False}
(* Get a list of all keys and values, as delayed rules. *)
In[3]:= DownValues[table]
Out[3]:= {HoldPattern[table[a]] :> foo, HoldPattern[table[b]] :> bar,
HoldPattern[table[c]] :> baz}
(* Remove a key from your table. *)
In[4]:= Unset[table[b]]; ValueQ[table[b]]
Out[4]:= False
Tôi muốn nói cấu trúc tương tự nhất mà bạn có thể nhận được ngoài hộp là sparse arrays.
Tôi đồng ý với Pillsy, nhưng xem thêm câu trả lời này:
Nó bao gồm một chức năng tiện dụng để nhận được chìa khóa của một bảng băm.
Tôi đã thực hiện mô-đun Dictionary.m, trong đó có:
DictHasKey = Function[
{
dict,
key
},
ValueQ[dict[key]]
]
DictAddKey = Function[
{
dict,
key,
value
},
If[
DictHasKey[dict,key],
Print["Warning, Dictionary already has key " <> ToString[key]]
];
dict[key] = value;
]
DictKeys = Function[
{
dict
},
res = {};
ForEach[DownValues[dict], Function[{dictKeyDescr},
res = Append[res, ((dictKeyDescr[[1]]) /. dict -> neverUsedSymbolWhatever)[[1, 1]]];
]];
res
]
DictValues = Function[
{
dict
},
res = {};
ForEach[DownValues[dict], Function[{dictKeyDescr},
res = Append[res, dictKeyDescr[[2]]];
]];
res
]
DictKeyValuePairs = Function[
{
dict
},
res = {};
ForEach[DownValues[dict], Function[{dictKeyDescr},
res = Append[res, {((dictKeyDescr[[1]]) /. dict -> neverUsedSymbolWhatever)[[1, 1]], dictKeyDescr[[2]]}];
]];
res
]
ForEach = Function[
{
list,
func
},
len = Length[list];
For[i = 1, i <= len, i++,
func[
list[[i]]
];
];
]
quên: ForEach = Function [ { danh sách, func }, len = Chiều dài [list]; Đối với [i = 1, i <= len, i ++, func [danh sách [[i]]]; ]; ] – Fiard
bạn có thể chỉnh sửa câu trả lời của mình để bao gồm câu trả lời đó. –
Mathematica 10 giới thiệu Hiệp hội, <| k -> v |>
,
<|a -> x, b -> y, c -> z|>
%[b]
y
cơ bản Đó là một wrapper cho một danh sách các quy tắc: Chuyển đổi danh sách các quy tắc cho một liên kết:
Association[{a -> x, b -> y, c -> z}]
<|a -> x, b -> y, c -> z|>
Chuyển đổi liên kết thành danh sách các quy tắc:
Normal[<|a -> x, b -> y, c -> z|>]
{a -> x, b -> y, c -> z}
- 1. Loại dữ liệu cấu trúc trong Mathematica?
- 2. Wolfram Workbench và Mathematica Hệ thống trợ giúp
- 3. Có thể tạo cấu trúc cho cấu trúc khác không?
- 4. Có thể sắp xếp một HashTable không?
- 5. Lập chỉ mục có cấu trúc và không có cấu trúc - Lucene và Hbase
- 6. Cấu trúc có bị chết không?
- 7. C++ Cấu trúc thành viên cấu trúc không đổi
- 8. Cấu trúc có biến mẫu trong C++
- 9. Các cấu trúc có trong phần .pdata
- 10. Có cấu trúc dữ liệu "Đặt" trong .Net không?
- 11. Xuất hiện văn bản không có cấu trúc trong NLTK
- 12. Văn bản có cấu trúc trong JSON
- 13. Cấu trúc trong Javascript
- 14. Sao chép cấu trúc vào cấu trúc trong C
- 15. Wolfram Alpha hoạt động như thế nào?
- 16. Có phiên bản memcpy tiêu chuẩn, có cấu trúc không?
- 17. "Cấu trúc" trong Ngôn ngữ truy vấn có cấu trúc là gì?
- 18. có bao nhiêu hạt nhân chạy song song trong Mathematica?
- 19. java.util.Stack cấu trúc dữ liệu thích hợp?
- 20. Cấu trúc Constructor trong C++?
- 21. Cấu trúc tĩnh trong C++
- 22. Tái cấu trúc trong Ruby
- 23. Thực hiện Hashtable
- 24. Bạn có cấu trúc lại theo các bước nhỏ không?
- 25. LaTeX có cấu trúc dữ liệu mảng không?
- 26. Cấu trúc dữ liệu Java Tham chiếu
- 27. Tại sao Direct3D không có cấu trúc đỉnh riêng?
- 28. Có cấu trúc dữ liệu Queue/FIFO cho iPhone không?
- 29. Làm thế nào để dừng việc đệ quy xảy ra trong một cấu trúc Mathematica Định dạng/Giải thích?
- 30. Python có cấu trúc dữ liệu dây không?
Câu trả lời này xứng đáng nhận được nhiều phiếu bầu hơn nữa. Theo quan điểm khiêm nhường của tôi, hầu như luôn sử dụng các cấu trúc vượt trội hơn là xây dựng của riêng mình. Nhưng 'Pillsy' cũng đã đưa ra một câu trả lời rất hay. – Shredderroy