The thing I most dislike about Python is the collection classes aren't sufficiently orthogonal.
What do I mean? Python has two main built-in collection types, list and dict. If you have a list you can use "in" to ask whether the list contains a value:
>>> a = ['a','b','c']
>>> 'a' in a
True
>>> 'zzz' in a
False
But if you're using a dict, "in" tells you whether the dict's keys contains a value (not the dict's value).
>>> d = {'x':'a', 'y':'b'}
>>> 'a' in d
False
>>> 'x' in d
True
To enumerate over a dict's key-value pairs, you use .items():
>>> d.items()
[('y', 'b'), ('x', 'a')]
But to enumerate over the key-value pairs in a list, you have to use enumerate():
> Python has two main built-in collection types, list and dict
And tuples.
> To enumerate over a dict's key-value pairs, you use .items():
You can also use enumerate.
> But to enumerate over the key-value pairs in a list, you have to use enumerate():
Just like you can with lists.
Python's collection operations do the right thing on collection data types. The fact that those data types also have type-specific operations merely means that those data types have some properties that are not common to all collection types, which is pretty much the reason why they exist.
php doesn't have a seperate list vs. hash type. that's what i'm getting at. maybe if you knew something about the language you wouldn't have just thought this was a random insult.
What do I mean? Python has two main built-in collection types, list and dict. If you have a list you can use "in" to ask whether the list contains a value:
But if you're using a dict, "in" tells you whether the dict's keys contains a value (not the dict's value). To enumerate over a dict's key-value pairs, you use .items(): But to enumerate over the key-value pairs in a list, you have to use enumerate():