I got very good help for question check if dictionary key has empty value . But I was wondering if there is a difference between and and & in python? I assume that they should be similar?
dict1 ={"city":"","name":"yass","region":"","zipcode":"",
"phone":"","address":"","tehsil":"", "planet":"mars"}
whitelist = {"name", "phone", "zipcode", "region", "city",
"munic", "address", "subarea"}
result = {k: dict1[k] for k in dict1.viewkeys() & whitelist if dict1[k]}
and is a logical operator which is used to compare two values, IE:
> 2 > 1 and 2 > 3
True
& is a bitwise operator that is used to perform a bitwise AND operation:
> 255 & 1
1
Update
With respect to set operations, the & operator is equivalent to the intersection() operation, and creates a new set with elements common to s and t:
>>> a = set([1, 2, 3])
>>> b = set([3, 4, 5])
>>> a & b
set([3])
and is still just a logical comparison function, and will treat a set argument as a non-false value. It will also return the last value if neither of the arguments is False:
>>> a and b
set([3, 4, 5])
>>> a and b and True
True
>>> False and a and b and True
False
For what its worth, note also that according to the python docs for Dictionary view objects, the object returned by dict1.viewkeys() is a view object that is "set-like":
The objects returned by
dict.viewkeys(),dict.viewvalues()anddict.viewitems()are view objects. They provide a dynamic view on the dictionary’s entries, which means that when the dictionary changes, the view reflects these changes....
dictview & otherReturn the intersection of the dictview and the other object as a new set.
...
and is logical and& is bitwise andlogical and returns the second value if both values evaluate to true.
For sets & is intersection.
If you do:
In [25]: a = {1, 2, 3}
In [26]: b = {3, 4, 5}
In [27]: a and b
Out[27]: set([3, 4, 5])
In [28]: a & b
Out[28]: set([3])
This be because bool(a) == True and bool(b) == True so and returns the second set. & returns the intersection of the sets.
(set doc)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With