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 & other
Return 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