Theoretical Physics
Theoretical Physics

Reputation: 1

Getting number of duplicate elements in a list (in tcl)

I have a list which looks like

list = {ab bc 8 ab d1 10 xy uv bc ab xy 10 d1}

I would like to know how often each element of the list occurs inside it, that is, I need a result like this:

ab 3

bc 2

8  1

d1 2

....

I prefer a single line argument (if such exists) instead of a proc. I need to work with both: list elements and their frequency in the list.

Any advice is welcome.

Thank you!

Upvotes: 0

Views: 727

Answers (1)

Donal Fellows
Donal Fellows

Reputation: 137567

Assuming that counter is the name of the dictionary where you want to collect this information (and is either currently unset or set to the empty string):

foreach item $list {dict incr counter $item}

You can then print that out in approximately the form you gave with:

dict for {item count} $counter {puts [format "%6s %-3d" $item $count]}

Note that this second line is about displaying the data, not actually finding it out.

Upvotes: 2

Related Questions