您现在的位置是:首页 >技术教程 >伯克利 CS61A 课堂笔记 08 —— Strings and Dictionaries网站首页技术教程
伯克利 CS61A 课堂笔记 08 —— Strings and Dictionaries
本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理,全英文内容,文末附词汇解释。
目录
Ⅱ Strings Literals have Three Forms
03 Dictionary Comprehensions 字典理解
01 Strings 字符串
Ⅰ Strings are An Abstraction.

>>> 'curry = lambda f: lambda x: lambda y: f(x, y)'
'curry = lambda f: lambda x: lambda y: f(x, y)'
>>> exec('curry = lambda f: lambda x: lambda y: f(x, y)')
>>> curry
<function <lambda> at 0x1003c1bf8>
>>> from operator import add
>>> curry(add)(3)(4)
7
Ⅱ Strings Literals have Three Forms
>>> 'I am string'
'I am string'
>>> '您好'
'您好'
>>> "I've learned a lot from CS61A"
"I've learned a lot from CS61A"
>>> """The Zen of Python
claims, Readability counts.
Read more: import this."""
'The Zen of Python
claims, Readability counts.
Read more: import this.'
① Single-quoted and double-quoted strings are equivalent.
② A backslash "escapes" the following character.
③ "Line feed" character represents a new line.
Ⅲ String are Sequences
Length and element selection are similar to all sequences.

However, the "in" and "not in" operators match substrings.

When working with strings, we usually care about whole words more than letters.
02 Dictionaries 字典
![]()
Dictionaries are collections of key-value pairs.
>>> numerals = {'I': 1, 'V': 5, 'X': 10}
>>> numerals
{'I': 1, 'V': 5, 'X': 10}
>>> numerals['I']
1
>>> numerals[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 0
>>> numerals['V']
5
>>> numerals['X']
10
>>> list(numerals)
['I', 'V', 'X']
>>> numerals.values()
dict_values([1, 5, 10])
>>> list(numerals.values())
[1, 5, 10]
>>> sum(numerals.values())
16
>>> {}
{}
>>> {1: {}}
{1: {}}
>>> {1: 'item'}
{1: 'item'}
>>> {1: ['first', 'second'], 3: 'third'}
{1: ['first', 'second'], 3: 'third'}
>>> d = {1: ['first', 'second'], 3: 'third'}
>>> d[1]
['first', 'second']
>>> d[3]
'third'
>>> len(d)
2
>>> len(d[1])
2
>>> len(d[3])
5
Dictionary key do have two restrictions.
#Two keys cannot be equal
#There can be at most one value for a given key
>>> {1: 'first', 1: 'second'}
{1: 'second'}
#A key of a dictionary cannot be a list or a dictionary(or any mutable type)
#[] or {}
>>> {[1]: 'first'}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: unhashable type: 'list'
>>> {{}: 'first'}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: unhashable type: 'dict'
The first restriction is part of the dictionary abstraction.
The second restriction is tied to Python's underlying implementation of dictionaries.
If you want to associate multiple values with a key, store them all in a sequence value.
03 Dictionary Comprehensions 字典理解

An expression that evaluates to a dictionary using this evaluation procedure:
① Add a new frame with the current frame as its parent.
② Create an empty result dictionary that is the value of the expression.
③ For each element in the iterable value of <iter exp>:
A. Bind <name> to that element in the new frame from step 1.
B. If <filter exp> evaluates to a true value, then add to the result dictionary an entry that
pairs the value of <key exp> to the value of <value exp>.
![]()
Example 1: Indexing

def index(keys, values, match):
"""Return a dictionary from keys to a list of values for which
match(k, v) is a true value.
>>> index([7, 9, 11], range(30, 50), lambda k, v: v % k == 0)
{7: [35, 42, 49], 9: [36, 45], 11: [33, 44]}
"""
return {k: [v for v in values if match(k, v) for k in keys]}
附:词汇解释
quote / kwoʊt / 引号
single-quote 单引号
double-quote 双引号
equivalent / ɪˈkwɪvələnt / 等同的
habitation 住所
backslash / ˈbækslæʃ / 反斜杠符号
escape / ɪˈskeɪp / 逃跑
mutable / ˈmjuːtəb(ə)l / 可变的
unhashable 不可哈希的
traceback 回溯
underlying 下层的,底层的
pair 配对





U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结