『Python 自学笔记』重新认识字典

文章目录

  • 我的编程之路
  • 字典是一种映射
  • 用字典作为计数器
  • 循环与字典
  • 逆向查找
  • 字典和列表
  • 字典的数据排序
  • 字典数据的替换
  • 字典术语列表

我的编程之路

从玩耍Excel表格到MySQL数据仓库,之后进入数据分析的天坑,然后再到大数据平台HIVE、Hbase。接着Django Web全栈开发。在走过这一圈之后,很多的内容学习都是碎片化的,在未来一段时间找几本书籍系统的学习一下,顺便做个笔记给后来的学生。

字典是 Python 里面最有功能特色的一种内置类型。

字典是一种映射

字典包括一系列的索引,不过就已经不叫索引了,而是叫键,然后还对应着一个个值,就叫键值。每个键对应着各自的一个单独的键值。这种键和键值的对应关系也叫键值对,有时候也叫项。

>>> eng2sp = {
     'one': 'uno', 'two': 'dos', 'three': 'tres'}

键(key):‘one’:, ‘two’ , ‘three’
值(value):‘uno’, ‘dos’, ‘tres’

用字典作为计数器

以一个统计频次来生成一个字典。

def histogram(s):
    d = dict()
    for c in s:
        if c not in d:
            d[c] = 1
        else:
            d[c] += 1
    return d

h = histogram('brontosaurus')
h
{
     'a': 1, 'b': 1, 'o': 2, 'n': 1, 's': 2, 'r': 2, 'u': 2, 't': 1}

循环与字典

可以使用 for 遍历循环字典中的数据。

def print_hist(h):
    for c in h:
        print(c, h[c])
        
h = histogram('parrot')
print_hist(h)
a 1 p 1 r 2 t 1 o 1

逆向查找

通常都是通过key去找value,反向查找也是可以的。

def histogram(s):
    d = dict()
    for c in s:
        if c not in d:
            d[c] = 1
        else:
            d[c] += 1
    return d
    
def reverse_lookup(d, v):
    for k in d:
        if d[k] == v:
            return k
    raise LookupError()

h = histogram('parrot')
h
{
     'p': 1, 'a': 1, 'r': 2, 'o': 1, 't': 1}

k = reverse_lookup(h, 2)
k
'r'

如果查找不到会抛出异常。

k = reverse_lookup(h, 3)

Traceback (most recent call last):   File "", line 1, in <module>   File "", line 5, in reverse_lookup ValueError

字典和列表

字典和列表是可以互相转换。

>>> person={
     "name":"Johnson","age":9,"gender":"male","height":"140cm"}

>>> person.keys()

dict_keys(['name', 'age', 'gender', 'height'])

>>>list1=list(person.keys())

>>>list1

['name', 'age', 'gender', 'height']

>>>list2=list(person.values())

>>>list2

['Johnson', 9, 'male', '140cm']

>>>list3=list(person.items())

>>>list3

[('name', 'Johnson'), ('age', 9), ('gender', 'male'), ('height', '140cm')]

字典的数据排序

>>> scoreDict={
     "John":82,"Christina":96,"Johnson":100,"Marry":73,"Emily":88,"Justin":92}
>>> scoreList=list(scoreDict.items())
>>> scoreList.sort()
>>> print (scoreList)

[('Christina', 96), ('Emily', 88), ('John', 82), ('Johnson', 100), ('Justin', 92), ('Marry', 73)]

# 等价于
>>> scoreList.sort(key=lambda items: items[1])
>>> print(scoreList)
[('Marry', 73), ('John', 82), ('Emily', 88), ('Justin', 92), ('Christina', 96), ('Johnson', 100)]

字典数据的替换

dic={
     'id': '102', 'time': 1563262149,  'name': ' 打卤', 'shop': ' 1'}

for k in dic:
    if dic[k] == "102" :
        dic[k] = "105"
        print (u"替换了:",k,"对应的values")
    print (k, dic[k])

替换了: id 对应的values
id 105
time 1563262149
name  打卤
shop  1

字典术语列表

  • 映射(mapping):一组数据中元素与另一组数据中元素的一一对应的关系。
  • 字典(dictionary):从键到对应键值的映射。
  • 键值对(key-value pair):有映射关系的一对键和对应的键值。
  • 项(item):字典中键值对也叫项。
  • 键(key):字典中的一个对象,键值对中的第一部分。
  • 键值(value):字典中的一个对象,键值对的第二部分。这个和之前提到的值不同,在字典使用过程中指代的是键值,而不是数值。
  • 实现(implementation):进行计算的一种方式。
  • 哈希表(hashtable):Python 实现字典的一种算法。
  • 哈希函数(hash function):哈希表使用的一种函数,能计算出一个键的位置。
  • 散列的(hashable):一种类型,有哈希函数。不可变类型比如整形、浮点数和字符串都是散列的;可变类型比如列表和字典则不是。
  • 查找(lookup):字典操作的一种,根据已有的键查找对应的键值。
  • 逆向查找(reverse lookup):字典操作的一种,根据一个键值找对应的一个或者多个键。
  • raise 语句(raise statement):特地要求抛出异常的一个语句。
  • 单元素集(singleton):只含有一个单独元素的列表或者其他序列。
  • 调用图(call graph):一种图解,解释程序运行过程中每一个步骤,用箭头来来连接调用者和被调用者之间。
  • 备忘(memo):将计算得到的值存储起来,避免后续的额外计算。
  • 全局变量(global variable):函数外定义的变量。全局变量能被所有函数来读取使用。
  • global 语句(global statement):声明一个变量为全局的语句。
  • 标识(flag):一个布尔变量,用来指示一个条件是否为真。
  • 声明(declaration):比如 global 这样的语句,用来告诉解释器变量的特征。

你可能感兴趣的:(python,开发语言,后端,自学笔记)