Want to create a dict of lists in Python? Use setdefault:
Want to assign to a Python dict, but only if the key doesn’t yet exist? Use setdefault:
Retrieve a value from a Python dict with the key: Request a key that doesn’t exist: Avoid that with dict.get, what I call “forgiving []”
Want to check if a Python dict contains a key? Use “in” on the dict: ‘a’ in d # True‘x’ in d # False Searching in d.keys() is far slower: ‘a’ in d # 10 ns‘a’ in d.keys() # 29 ns (!)
Want to create a Python dict? You have options; which is fastest? – Literal, with {‘a’:10, ‘b’:20}: 37.8 ns– Invoke dict(a=10, b=20): 58.5 ns– Invoke dict on a list of tuples, dict([(‘a’, 10), (‘b’, 20)]): 103 ns– Comprehension, {c : ord(c) for c in ‘ab’}: 78 ns
Trying to use .loc to retrieve a slice in Python Pandas? If the index repeats, you need to sort it:
Retrieve from a Python Pandas data frame with .loc, which takes 2 arguments: 1. Row selector: index, list of indexes, or a mask index (i.e., booleans)2. Optional column selector: column name or a list of column names .loc uses [] and not (), so you can use slices!
Filtering a Python Pandas data frame by the index? Pandas 3 adds pd.col, removing lambda from our .loc expression. Before: Now: Note: You cannot use pd.col with a series, only a data frame.
To filter a Python Pandas data frame by rows, use the same syntax and rules as for series: The lambda still returns a boolean series. The expression can use any column from the data frame. Tomorrow: How Pandas 3 improves on this.
Why do I use loc+lambda to filter a Python Pandas series? 1. If earlier lines filter common values, later loc/lambda lines have less to filter — so queries run faster.2. It’s easier to build queries, one line at a time.3. No assignment means less to track and clean up.