FAQs
1. 一次获取字典多个值
问题描述
无法通过 .get()
方法传入多个键值获得字典多个值
| >>> list1 = ['one', 'two', 'three'] |
| >>> list2 = [1, 2, 3] |
| >>> mydict = dict(zip(list1,list2)) |
| >>> mydict.get('one') |
| 1 |
| >>> mydict.get('one','two') |
| 1 |
| >>> mydict['one'] |
| 1 |
| >>> mydict['one','two'] |
| Traceback (most recent call last): |
| File "<pyshell#9>", line 1, in <module> |
| mydict['one','two'] |
| KeyError: ('one', 'two') |
解决方法1 : from operator import itemgetter
| from operator import itemgetter |
| >>> itemgetter('one','two')(mydict) |
| (1, 2) |
| >>> itemgetter(*['one','two'])(mydict) |
| (1, 2) |
| >>> itemgetter(['one','two'])(mydict) |
| Traceback (most recent call last): |
| File "<pyshell#15>", line 1, in <module> |
| itemgetter(['one','two'])(mydict) |
| TypeError: unhashable type: 'list' |
解决方法2:from pydash import at (该方法需要安装 pydash 模块)
| from pydash import at |
| dict = {'a': 1, 'b': 2, 'c': 3} |
| list = at(dict, 'a', 'b') |
| list == [1, 2] |
2. 函数返回值为字典
| def func1(): |
| parameters = {'a':1,'b':2,'c':3} |
| return parameters |
| |
| func1().get('a') |
| 输出:1 |
Introduction to Dictionary
Definition:
A dictionary is an unordered set of key: value pairs.
| menu = {"oatmeal": 3, "avocado toast": 6, "carrot juice": 5, "blueberry muffin": 2} |
- A dictionary begins and ends with curly braces (
{
and }
).
- Each item consists of a key (i.e., “oatmeal”) and a value (i.e., 3)
- Each key: value pair (i.e.,
"oatmeal": 3
or "avocado toast": 6
) is separated by a comma (,
)
- It’s considered good practice to insert a space () after each comma, but your code will still run without the space.
Difference between dictionary and list
List
: a collection of oredered objetcs
Dictionary
: a collection of unordered objects
Benifits:
- Use a key to get a value from a dictionary
- Check for existence of keys
- Find the length of a dictionary
- Iterate through keys and values in dictionaries
- Describe related information of an object using a bunch of key-value pair In a complex scenario
- put many dict in a list, iterating each of elemen for the same operation
| card_list = [{"name": "张三", |
| "qq": "12345", |
| "phone": "110"}, |
| {"name": "李四", |
| "qq": "54321", |
| "phone": "10086"} |
| ] |
Key points:
-
list or dictionary can not be key
string,number, tuple (immutable)
-
Hash the key to determine how to store the dictionary's data in memory
- key : immutable data type
- value : any type of data
Inspect
| dict.keys() |
| dict.values() |
| dict.items() |
Add a key (overwrite) /multiple keys .update()
| |
| Dict[key] = value |
| if key has existed, To modify previous data |
| Dict.setdefault(key,value) |
| if key has existed, Keep the original one |
| |
| animals_in_zoo={} |
| animals_in_zoo["zebras"] = 8 |
| animals_in_zoo["monkeys"] = 12 |
| animals_in_zoo["dinosaurs"] = 0 |
| animals_in_zoo["dinosaurs"] = 2 |
| print(animals_in_zoo) |
| |
| |
| user_ids.update({"theLooper":138475, "stringQueen": 85739}) |
| |
| |
| oscar_winners = {"Best Picture": "La La Land", "Best Actor": "Casey Affleck", "Best Actress": "Emma Stone", "Animated Feature": "Zootopia"} |
| oscar_winners["Supporting Actress"] = "Viola Davis" |
| oscar_winners["Best Picture"] = "Moonlight" |
Del
| del dict[key] |
| dict.pop(key) |
| dict.popitem() |
| dict.clear() |
List Comprehensions to Dictionaries
| names = ['Jenny', 'Alexus', 'Sam', 'Grace'] |
| heights = [61, 70, 67, 64] |
| students = {key:value for key, value in zip(names, heights)} |
| |
| |
| Takes a pair from the zipped list of pairs from names and heights |
| Names the elements in the pair key (the one originally from the names list) and value (the one originally from the heights list) |
| Creates a key : value item in the students dictionary |
| Repeats steps 1-3 for the entire list of pairs |
| songs = ["Like a Rolling Stone", "Satisfaction", "Imagine", "What's Going On", "Respect", "Good Vibrations"] |
| playcounts = [78, 29, 44, 21, 89, 5] |
| plays = {song:playcount for song, playcount in zip(songs,playcounts)} |
| print(plays) |
| plays["Purple Haze"] = 1 |
| plays["Respect"] = 94 |
| |
| library = {"The Best Songs": plays, "Sunday Feelings": {}} |
| print(library) |
Using Dictionaries
Key points:
Try/Except to Get a Key
| caffeine_level = {"espresso": 64, "chai": 40, "decaf": 0, "drip": 120} |
| |
| caffeine_level["matcha"] = 30 |
| key_to_check = "matcha" |
| try: |
| print(caffeine_level[ key_to_check]) |
| except KeyError: |
| print("Unknown Caffeine Level") |
| |
| >>> building_heights.get('Shanghai Tower', 0) |
| 632 |
| >>> building_heights.get('Mt Olympus', 0) |
| 0 |
| >>> building_heights.get('Kilimanjaro', 'No Value') |
| 'No Value' |
Delete a key .pop( )
| raffle = {223842: "Teddy Bear", 872921: "Concert Tickets", 320291: "Gift Basket", 412123: "Necklace", 298787: "Pasta Maker"} |
| raffle.pop(320291, "No Prize") |
| "Gift Basket" |
| |
Get All Keys .keys( )
| user_ids = {"teraCoder": 100019, "pythonGuy": 182921, "samTheJavaMaam": 123112, "lyleLoop": 102931, "keysmithKeith": 129384} |
| num_exercises = {"functions": 10, "syntax": 13, "control flow": 15, "loops": 22, "lists": 19, "classes": 18, "dictionaries": 18} |
| |
| users = user_ids.keys() |
| users1 = list(user_ids) |
| lessons = num_exercises.keys() |
| |
| print(users) |
| print(users1) |
| print(lessons) |
| |
| dict_keys(['teraCoder', 'pythonGuy', 'samTheJavaMaam', 'lyleLoop', 'keysmithKeith']) |
| A dict_keys object is a view object, which provides a look at the current state of the dicitonary, without the user being able to modify anything. |
| ['teraCoder', 'pythonGuy', 'samTheJavaMaam', 'lyleLoop', 'keysmithKeith'] |
| |
| dict_keys(['functions', 'syntax', 'control flow', 'loops', 'lists', 'classes', 'dictionaries']) |
Get all values
| num_exercises = {"functions": 10, "syntax": 13, "control flow": 15, "loops": 22, "lists": 19, "classes": 18, "dictionaries": 18} |
| total_exercises = 0 |
| for num in num_exercises.values(): |
| total_exercises += num |
| print (total_exercises) |
Get All Items
| pct_women_in_occupation = {"CEO": 28, "Engineering Manager": 9, "Pharmacist": 58, "Physician": 40, "Lawyer": 37, "Aerospace Engineer": 9} |
| for occupation, value in pct_women_in_occupation.items(): |
| print("Women make up " +str(value) +" percent of "+occupation+ "s.") |
Project 01 — Scrabble
| letters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] |
| points = [1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 4, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10] |
| |
| letter_to_points = {letter: point for letter, point in zip(letters, points)} |
| letter_to_points[" "]=0 |
| |
| def score_word(word): |
| point_total = 0 |
| for letter in word: |
| point_total += letter_to_points.get(letter,0) |
| return point_total |
| |
| brownie_points = score_word("BROWNIE") |
| |
| player_to_words = {"wordNerd": "EARTH EYES MACHINE", "Lexi Con": "ERASER BELLY HUSKY" , "Prof Reader": "ZAP COMA PERIOD"} |
| player_to_points = {} |
| |
| for item in player_to_words: |
| player_points = 0 |
| for word in player_to_words[item]: |
| player_points += score_word(word) |
| player_to_points[item] = player_points |
| print(player_to_points) |
Project 02— unique Values
| oscars = {"Best Picture": "Moonlight", "Best Actor": "Casey Affleck", "Best Actress": "Emma Stone", "Animated Feature": "Zootopia"} |
| |
| for element in oscars: |
| print(element) |
| |
| |
| def unique_values (my_dictionary): |
| num_value = 0 |
| before_letter = [] |
| for value in my_dictionary.values(): |
| if not value in before_letter: |
| num_value += 1 |
| before_letter.append(value) |
| return num_value |
| |
| |
| |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步