Skip to content
Snippets Groups Projects
Commit 2eb11ed1 authored by Patrick Lam's avatar Patrick Lam
Browse files

refactor out reverse_dict

parent e2b2dda5
No related branches found
No related tags found
No related merge requests found
......@@ -16,4 +16,7 @@ fn main() {
let (double_dict, triple_dict, all_token_list) = packages::parser::parse_raw(args.raw);
packages::parser::print_dict(triple_dict);
// let's say that the cutoff is 72 for Linux2k.log.
// check all of the 2-grams from the less-frequent 3-grams
}
......@@ -243,9 +243,10 @@ fn test_parse_raw() {
assert_eq!(triple_dict, triple_dict_oracle);
}
pub fn print_dict(d: HashMap<String, i32>) {
let mut reverse_d : HashMap<i32, Vec<String>> = HashMap::new();
let mut key_set = BTreeSet::new();
/// standard mapreduce invert map: given {<k1, v1>, <k2, v2>, <k3, v1>}, returns ([v1, v2] (sorted), {<v1, [k1, k3]>, <v2, [k2]>})
pub fn reverse_dict(d: HashMap<String, i32>) -> (BTreeSet<i32>, HashMap<i32, Vec<String>>) {
let mut reverse_d: HashMap<i32, Vec<String>> = HashMap::new();
let mut val_set: BTreeSet<i32> = BTreeSet::new();
for (key, val) in d.iter() {
if reverse_d.contains_key(val) {
......@@ -253,13 +254,18 @@ pub fn print_dict(d: HashMap<String, i32>) {
existing_keys.push(key.to_string());
} else {
reverse_d.insert(*val, vec![key.to_string()]);
key_set.insert(val);
val_set.insert(*val);
}
}
return (val_set, reverse_d);
}
pub fn print_dict(d: HashMap<String, i32>) {
let (val_set, reverse_d) = reverse_dict(d);
println!("printing dict");
for key in &key_set {
println!("{}: {:?}", key, reverse_d.get(key).unwrap());
for val in &val_set {
println!("{}: {:?}", val, reverse_d.get(val).unwrap());
}
println!("---");
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment