lina wrote:

May I ask a further question:

a
{'B': [4, 5, 6], 'E': {1, 2, 3}}

Why is a['B'] a list and a['E'] a set?



How can I get the value of
set(a['E'])+set(a['B'])

I mean, get a new dict 'B+E':[5,7,9]


You are confusing different things into one question, as if I had asked:

"How do I make a hard boiled egg? I mean, get a potato salad."

You must ask a clear question to get a clear answer.



To answer your first question, what do you mean by adding two sets? I can take the *union* of two sets (anything in either one OR the other):

>>> a['E'] | set(a['B'])  # one is already a set, no need to convert
{1, 2, 3, 4, 5, 6}


or I can take the *intersection* of the two sets (anything in both one AND the other):

>>> a['E'] & set(a['B'])
set()

There are no items in common between the two, so nothing in the intersection.


To get the result you are asking for:

[5, 7, 9]

makes no sense. How do you expect to get a *list* by combining two *sets*? They are different things. Lists have order, sets do not:

>>> [1, 2, 3] == [3, 2, 1]
False
>>> {1, 2, 3} == {3, 2, 1}
True


A list is a sequence of values in order, a set is like a jumble of values tossed in a bag.

My *guess* is that you don't care about sets at all, you want two lists:


[1, 2, 3]
[4, 5, 6]


and you want to add them item by item to get another list:

[5, 7, 9]


Have I guessed correctly?


If so, here's the hard way to do it:


first_list = [1, 2, 3]
second_list = [4, 5, 6]
result = []
for i in range(3):
    a = first_list[i]
    b = second_list[i]
    result.append(a + b)

print(result)


Walking along two lists in lock-step like that is so common that Python has a dedicated function specially for it: zip.

result = []
for a,b in zip(first_list, second_list):
    result.append(a+b)


which can be simplified further to a list comprehension:

result = [a+b for a,b in zip(first_list, second_list)]



--
Steven
_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to