YNWA1992 - 6 months ago 21
Python Question

Dictionary Comprehension example

I have a set, which contains n sets of prime numbers(3):

``````>>> sets
{frozenset({3, 13, 23}), frozenset({17, 2, 13}),
frozenset({19, 2, 3}), frozenset({3, 29, 23}), frozenset({17, 11, 23}),
frozenset({17, 2, 19}), frozenset({11, 17, 3}), frozenset({17, 5, 7})}
``````

I want to create the dictionary with values: prime numbers-triple and keys: the product of three prime numbers.

This is my attempt:

``````lists = [list(i) for i in sets]
products = [reduce(lambda x,y:x*y,i) for i in lists]
dictir = {x:y for x in products for y in sets}
``````

But dictir gives me incorrect result:

``````{897: frozenset({17, 5, 7}), 114: frozenset({17, 5, 7}), 595: frozenset({17, 5, 7}), 561: frozenset({17, 5, 7}), 646: frozenset({17, 5, 7}), 2001: frozenset({17, 5, 7}), 442: frozenset({17, 5, 7}), 4301: frozenset({17, 5, 7})}
``````

Can you help me to correct this?

You may use `zip()` but another, more efficient approach would be this:
``````import operator