Reputation: 3
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
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
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
Reputation: 195438
The error is you are returning from the function too early. Remove the various return
s 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