Data Science from Scratch (23 Part Series)
1 Data Science from Scratch: Intro & Setup
2 Higher Order Functions
… 19 more parts…
3 Strings and Exceptions
4 Python List and Numpy Array
5 Dictionaries
6 defaultdict
7 Counters & Sets
8 Control Flow & Truthiness
9 List Comprehensions
10 Understanding Object-Oriented Programming with Assert
11 A Brief Foray into Lazy Evaluation
12 Pseudo-Randomness and a hint of Regex
13 Collections and Comprehensions
14 Collections and Comprehensions (pt.2)
15 Making sense of matplotlib
16 Vectors in Python
17 Matrices in Python
18 Statistics from Scratch with Python
19 Conditional Probability with Python: Concepts, Tables & Code
20 Bayes’ Theorem: Concepts and Code
21 Probability Distributions with Python: Discrete & Continuous
22 Explore Hypothesis Testing using Python
23 Grasping Gradient Descent using Python
Dictionaries are good for storing structured data. They have a key/value pair so you can look up values of certain keys. The author provides some ways to initialize a dictionary, with comments about what is more or less pythonic (I’ll take the author’s word for it, but open to other perspectives).
Some of the things you can do with dictionaries
are query keys, values, assign new key/value pairs, check for existence of keys or retrieve certain values.
empty_dict = {} # most pythonic empty_dict2 = dict() # less pythonic grades = {"Joel": 80, "Grus": 99} # dictionary literal
type(grades) # type check, dict
# use bracket to look up values grades["Grus"] # 99 grades["Joel"] # 80
# KeyError for looking up non-existent keys try:
kate_grades = grades["Kate"]
except KeyError:
print("That key doesn't exist")
# use in operator to check existence of key joe_has_grade = "Joel" in grades
joe_has_grade # true
kate_does_not = "Kate" in grades
kate_does_not # false
# use 'get' method to get values in dictionaries grades.get("Joel") # 80 grades.get("Grus") # 99 grades.get("Kate") # default: None
# assign new key/value pair using brackets grades["Tim"] = 93
grades # {'Joel': 80, 'Grus': 99, 'Tim': 93}
Enter fullscreen mode Exit fullscreen mode
Dictionaries are good for representing structured data that can be queried. The key take-away here is that in order to iterate through dictionaries
to get either keys
, values
or both, we’ll need to use specific methods likes keys()
, values()
or items()
.
tweet = {
"user": "paulapivat",
"text": "Reading Data Science from Scratch",
"retweet_count": 100,
"hashtags": ["#66daysofdata", "datascience", "machinelearning", "python", "R"]
}
# query specific values tweet["retweet_count"] # 100
# query values within a list tweet["hashtags"] # ['#66daysofdata', 'datascience', 'machinelearning', 'python', 'R'] tweet["hashtags"][2] # 'machinelearning'
# retrieve ALL keys tweet_keys = tweet.keys()
tweet_keys # dict_keys(['user', 'text', 'retweet_count', 'hashtags']) type(tweet_keys) # different data type: dict != dict_keys
# retrieve ALL values tweet_values = tweet.values()
tweet_values # dict_values(['paulapivat', 'Reading Data Science from Scratch', 100, ['#66daysofdata', 'datascience', 'machinelearning', 'python', 'R']])
type(tweet_values) # different data type: dict != dict_values
# create iterable for Key-Value pairs (in tuple) tweet_items = tweet.items()
# iterate through tweet_items() for key,value in tweet_items:
print("These are the keys:", key)
print("These are the values:", value)
# cannot iterate through original tweet dictionary # ValueError: too many values to unpack (expected 2) for key, value in tweet:
print(key)
# cannot use 'enumerate' because that only provides index and key (no value) for key, value in enumerate(tweet):
print(key) # print 0 1 2 3 - index values print(value) # user text retweet_count hashtags (incorrectly print keys)
Enter fullscreen mode Exit fullscreen mode
Just like in lists
and tuples
, you can use the in
operator to find membership. The one caveat is you cannot look up values that are in lists
, unless you use bracket notation to help.
# search keys "user" in tweet # true "bball" in tweet # false
"paulapivat" in tweet_values # true 'python' in tweet_values # false (python is nested in 'hashtags') "hashtags" in tweet # true
# finding values inside a list requires brackets to help 'python' in tweet['hashtags'] # true
Enter fullscreen mode Exit fullscreen mode
What is or is not hashable?
Dictionary
keys must be hashable.
Strings
are hashable. So we can use strings
as dictionary keys, but we cannot use lists
because they are not hashable.
paul = "paul"
type(paul) # check type, str
hash(paul) # -3897810863245179227 ; strings are hashable paul.__hash__() # -3897810863245179227 ; another way to find the hash
jake = ['jake'] # this is a list type(jake) # check type, list
# lists are not hashable - cannot be used as dictionary keys try:
hash(jake)
except TypeError:
print('lists are not hashable')
Enter fullscreen mode Exit fullscreen mode
For more content on data science, machine learning, R, Python, SQL and more, find me on Twitter.
Data Science from Scratch (23 Part Series)
1 Data Science from Scratch: Intro & Setup
2 Higher Order Functions
… 19 more parts…
3 Strings and Exceptions
4 Python List and Numpy Array
5 Dictionaries
6 defaultdict
7 Counters & Sets
8 Control Flow & Truthiness
9 List Comprehensions
10 Understanding Object-Oriented Programming with Assert
11 A Brief Foray into Lazy Evaluation
12 Pseudo-Randomness and a hint of Regex
13 Collections and Comprehensions
14 Collections and Comprehensions (pt.2)
15 Making sense of matplotlib
16 Vectors in Python
17 Matrices in Python
18 Statistics from Scratch with Python
19 Conditional Probability with Python: Concepts, Tables & Code
20 Bayes’ Theorem: Concepts and Code
21 Probability Distributions with Python: Discrete & Continuous
22 Explore Hypothesis Testing using Python
23 Grasping Gradient Descent using Python
原文链接:Dictionaries
暂无评论内容