Skip to content

CountTable inconsistencies between keys() and len() after setting value to 0  #12813

@andreas-wilm

Description

@andreas-wilm

After setting a CountTable value to 0 (in lieu of a missing del() call!?), the key appears from keys() as expected, but is still accounted for in len()

Example

import tables

let myString = "abracadabra"
var letterFrequencies = toCountTable(myString)

echo "BEFORE set 0"
echo letterFrequencies
echo "len ", len(letterFrequencies)
for k, v in letterFrequencies.pairs():
  echo k, ":", v

echo "AFTER set 0"
letterFrequencies['a'] = 0
echo letterFrequencies
echo "len ", len(letterFrequencies)
for k, v in letterFrequencies.pairs():
  echo k, ":", v

Current Output

BEFORE set 0
{'a': 5, 'b': 2, 'c': 1, 'd': 1, 'r': 2}
len 5
a:5
b:2
c:1
d:1
r:2
AFTER set 0
{'b': 2, 'c': 1, 'd': 1, 'r': 2}
len 5
b:2
c:1
d:1
r:2

Expected Output

BEFORE set 0
{'a': 5, 'b': 2, 'c': 1, 'd': 1, 'r': 2}
len 5
a:5
b:2
c:1
d:1
r:2
AFTER set 0
{'b': 2, 'c': 1, 'd': 1, 'r': 2}
len 4
b:2
c:1
d:1
r:2

Possible Solution

NA

Additional Information

See also https://forum.nim-lang.org/t/5639#35021 and https://stackoverflow.com/questions/59160984/remove-key-from-counttable-in-nim

$ nim -v
Nim Compiler Version 1.0.4 [Linux: amd64]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions