Combining sets/dictionaries

Peter Otten __peter__ at web.de
Tue Sep 22 13:04:48 CEST 2009


Alfons Nonell-Canals wrote:

> I have different sets/dictionaries/lists (whatever you want because I
> can convert them easily) and I would like to combine them. I don't want
> a consensus and something like it. I'd need to combine all elements of
> the first one with the all elements of the second one and third,... the
> numbers of dictionaries/sets/lists is variable as the number of elements
> for each one.
> 
> For example, i have the following sets and I would like to obtain all
> possible combinations...
> 
> ['I', 'O', 'N', 'P', 'S', 'C']
> ['I', 'O', 'N', 'P', 'S', 'C']
> ['I', 'O', 'N', 'P', 'S', 'C']
> ['I', 'N', 'P', 'S', 'C']
> ['I', 'N', 'P', 'S', 'C']
> ['F', 'I', 'L', 'O', 'N', 'P', 'S', 'R', 'C']
> ['I', 'O', 'N', 'P', 'S', 'C']
> ['I', 'O', 'N', 'P', 'S', 'C']
> ['F', 'I', 'L', 'O', 'N', 'P', 'S', 'R', 'C']
> 
> And it should be flexible because as I've said, the number of
> dictionaries/lists/sets is not always the same, as the number of elements.
> 
> I don't like to ask this kid of questions but... today I'm totally lost
> and I need it to close one part of a nice project...

Using one common definition of "combinations":

>>> from pprint import pprint
>>> pprint(items)
[['I', 'O', 'N', 'P', 'S', 'C'],
 ['I', 'O', 'N', 'P', 'S', 'C'],
 ['I', 'O', 'N', 'P', 'S', 'C'],
 ['I', 'N', 'P', 'S', 'C'],
 ['I', 'N', 'P', 'S', 'C'],
 ['F', 'I', 'L', 'O', 'N', 'P', 'S', 'R', 'C'],
 ['I', 'O', 'N', 'P', 'S', 'C'],
 ['I', 'O', 'N', 'P', 'S', 'C'],
 ['F', 'I', 'L', 'O', 'N', 'P', 'S', 'R', 'C']]
>>> import itertools
>>> for c in itertools.combinations(items, 2):
...     print c
...
(['I', 'O', 'N', 'P', 'S', 'C'], ['I', 'O', 'N', 'P', 'S', 'C'])
(['I', 'O', 'N', 'P', 'S', 'C'], ['I', 'O', 'N', 'P', 'S', 'C'])
(['I', 'O', 'N', 'P', 'S', 'C'], ['I', 'N', 'P', 'S', 'C'])
(['I', 'O', 'N', 'P', 'S', 'C'], ['I', 'N', 'P', 'S', 'C'])
<snip>

If you mean something else (likely) please give a more detailed description 
or provide some examples with both input and desired output.

Peter




More information about the Python-list mailing list