anupam
anupam

Reputation: 3

Python - error - ValueError: too many values to unpack (expected 6)

I am returning 6 values but getting the error - too many values to unpack def setOperation(seta, setb):

new_set_a = set(seta)
new_set_b = set(setb)
if len(new_set_b) < 10000 and len(new_set_b) < 10000:

    seta_union_setb = new_set_a.union(new_set_b)
    seta_union_setb_list = list(seta_union_setb)
    seta_union_setb_list.sort()
    return seta_union_setb_list

    seta_inter_setb = new_set_a.intersection(new_set_b)
    seta_inter_setb_list = list(seta_inter_setb)
    seta_inter_setb_list.sort()
    return seta_inter_setb_list

    seta_diff_setb = new_set_a.difference(new_set_b)
    seta_diff_setb_list = list(seta_diff_setb)
    seta_diff_setb_list.sort()
    return seta_diff_setb_list

    setb_diff_seta = new_set_b.difference(new_set_a)
    setb_diff_seta_list = list(setb_diff_seta)
    setb_diff_seta_list.sort()
    return setb_diff_seta_list

    seta_symm_setb = new_set_a.symmetry(new_set_b)
    seta_symm_setb_list = list(seta_symm_setb)
    seta_symm_setb_list.sort()
    return seta_symm_setb_list

    new_set_a_frozen = frozenset(new_set_a)
    return  new_set_a_frozen

un, int, diffa, diffb, sydiff, frset = setOperation(['apple', 'orange', 'grapes', 'mango', 'starfruit'],
                                                    ['papaya', 'mango', 'jackfruit', 'grapes', 'lichy'])

Can someone please help me identify why I am getting the following error - ValueError: too many values to unpack (expected 6)

Upvotes: 0

Views: 4062

Answers (3)

tarandeep kaur
tarandeep kaur

Reputation: 1

def setOperation(seta, setb):
    # Write your code here
    sa = set(seta)
    sb = set(setb)
    if len(sa) < 10000 and len(sb) < 10000:

        sa = set(seta)   # excluding list also will pass the result
        sb = set(setb)
        s1 = sa.union(sb)
        s2 = sa.intersection(sb)
        s3 = sa.difference(sb)
        s4 = sb.difference(sa)
        s5 = sa.symmetric_difference(sb)
        x = frozenset(seta)
        return (s1, s2, s3, s4, s5, x)

Upvotes: 0

Santosh Karki
Santosh Karki

Reputation: 33

def setOperation(seta, setb):
    sa = set(seta)
    sb = set(setb)
    s1 = list((sa.union(sb)))
    s2 = list((sa.intersection(sb)))
    s3 = list((sa.difference(sb)))
    s4 = list((sb.difference(sa)))
    s5 = list((sa.symmetric_difference(sb)))
    x = frozenset(seta)
    return (s1, s2, s3, s4, s5, x)

Upvotes: 2

Andrej Kesely
Andrej Kesely

Reputation: 195438

The error is you are returning from the function too early. Remove the various returns and make only one return at the end of the function.

For example:

def setOperation(seta, setb):

    new_set_a = set(seta)
    new_set_b = set(setb)
    if len(new_set_b) < 10000 and len(new_set_b) < 10000:

        seta_union_setb = new_set_a.union(new_set_b)
        seta_union_setb_list = list(seta_union_setb)
        seta_union_setb_list.sort()

        seta_inter_setb = new_set_a.intersection(new_set_b)
        seta_inter_setb_list = list(seta_inter_setb)
        seta_inter_setb_list.sort()

        seta_diff_setb = new_set_a.difference(new_set_b)
        seta_diff_setb_list = list(seta_diff_setb)
        seta_diff_setb_list.sort()

        setb_diff_seta = new_set_b.difference(new_set_a)
        setb_diff_seta_list = list(setb_diff_seta)
        setb_diff_seta_list.sort()

        seta_symm_setb = new_set_a.symmetric_difference(new_set_b)  # <-- change to .symmetric_difference
        seta_symm_setb_list = list(seta_symm_setb)
        seta_symm_setb_list.sort()

        new_set_a_frozen = frozenset(new_set_a)

        return seta_union_setb, seta_inter_setb, seta_diff_setb, setb_diff_seta, seta_symm_setb, new_set_a_frozen

    raise Exception('Invalid paramters.') # <-- or return some other value

un, int, diffa, diffb, sydiff, frset = setOperation(['apple', 'orange', 'grapes', 'mango', 'starfruit'],
                                                    ['papaya', 'mango', 'jackfruit', 'grapes', 'lichy'])

print(un, int, diffa, diffb, sydiff, frset)

Prints:

{'grapes', 'orange', 'apple', 'starfruit', 'mango', 'jackfruit', 'lichy', 'papaya'} {'mango', 'grapes'} {'starfruit', 'orange', 'apple'} {'lichy', 'jackfruit', 'papaya'} {'starfruit', 'jackfruit', 'lichy', 'orange', 'papaya', 'apple'} frozenset({'starfruit', 'mango', 'grapes', 'orange', 'apple'})

Upvotes: 3

Related Questions