[Python-ideas] data structures should have an .any() method

Masklinn masklinn at masklinn.net
Fri Sep 4 11:48:43 CEST 2009


On 4 Sep 2009, at 11:35 , Stefan Behnel wrote:
Hi,
>
> I just had a discussion with a co-worker, and we noticed that there  
> are use
> cases where you just want the only element in a data structure, or  
> just any
> of the elements in a data structure because you know that they all  
> contain
> the same information (with respect to what you are looking for, at  
> least).
>
> If you want all items, you can iterate, but if you just want any  
> item or
> the only item, it's inefficient (and not very explicit code) to  
> create an
> iterator and take the element out. It's easy to do with ordered data
> structures such as lists or tuples ("container[0]"), but it's not so
> obvious for sets (or dicts), which means that you have to know what  
> kind of
> container you receive to handle it correctly. I know there's .pop() on
> sets, but that modifies the data structure.
>
> It would therefore be nice to have a common ".any()" method on data
> structures that would just read an arbitrary item from a container.
>
> Regarding the special (and probably minor use) case of dicts, I  
> assume it
> would return any key, so that you could get the value from the dict  
> in a
> second step if you want. Only returning the value would not easily  
> get you
> the key itself.
Given the random value you want from the dict is a key, how about  
`random.choice(list(container))` (list is needed because choice works  
on sequences)?

 >>> l, s, d
([0, 1, 2, 3, 4], set([8, 9, 5, 6, 7]), {10: 15, 11: 16, 12: 17, 13:  
18, 14: 19})
 >>> choice(list(l))
4
 >>> choice(list(s))
8
 >>> choice(list(d))
14



More information about the Python-ideas mailing list