[Paddy] > Lets say you have two *sets* of integers representing two near-copies > of some system, then a measure of their difference could be calculated > as: > > len(X.symmetric_difference(Y)) / (len(X) + len(Y)) * 100 % > > If the two collections of integers are allowed duplicates then you > need a Counter/bag/multi-set type and the diff calculation I gave > originally.
Thanks for sharing your use case. It's unlikely that I will add this method to the Counter API because the rarity of use case does not warrant the added API complexity. IMO, adding a method like this makes the class harder to learn, understand and remember. It doesn't seem like much of a win over using the existing alternatives: * (b - c) + (c - b) * (b | c) - (b & c) * DIY using the two counters as simple dicts * writing a subclass providing additional binary operations I would like to see someone post a subclass to the ASPN Cookbook that adds a number of interesting, though not common operations. Your symmetric_difference() method could be one. A dot_product() operation could be another. Elementwise arithmetic is another option (we already have add and subtract, but could possibly use multiply, divide, etc). Scaling operations are another possibility (multiple all elements by five, for example). The Counter() class has low aspirations. It is a dictionary that fills-in missing values with zero and is augmented by a handful of basic methods for managing the counts. Raymond -- http://mail.python.org/mailman/listinfo/python-list