强大的数据结构和Python扩展库1

该系列为南京大学课程《用Python玩转数据》学习笔记,主要以思维导图的记录

4.1 & 4.2 为什么需要字典 & 字典的使用

2_1-2

测验题:字典变成小练习项目

用字典创建一个平台的用户信息(包含用户名和密码)管理系统,新用户可以用与现有系统帐号不冲突的用户名创建帐号,已存在的老用户则可以用用户名和密码登陆重返系统。你完成了吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# -*- coding: utf-8 -*-
# author:zhengk
users = {}


def newusers():
global users
name = input('Please input a name:')
if name in users:
name = input('This name is already used, Please input an other name:')
else:
password = input('Please input your password:')
users[name] = password
print('Your information is recorded!')


def oldusers():
global users
name = input('Please input your name:')
password = input('Please input your password:')
if password == users.get(name):
print(name, 'welcome back ')
else:
print('login incorrect')


def login():
while True:
option = input('''
(N)ew User Login
(O)ld User Login
(E)xit
"""
Enter the option
''')
if option == 'N':
newusers()
elif option == 'O':
oldusers()
elif option == 'E':
break


if __name__ == '__main__':
login()

字典经典应用编程小例

  • 1、从键盘输入一个英文句子,除单词和空格外句子中只包含“,”、“.”、“’”、“””和“!”
    这几个标点符号,统计句子中包括的每个单词(将句中大写全部转换成小写)的词频并将结
    果存入字典中并输出。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    if __name__ == '__main__':
    out = {}
    sentence = input('Please input a sentence:')
    words = sentence.lower().split()
    for word in words:
    if word[-1] in ',.\'"!':
    word = word[:-1]
    out[word] = out.get(word, 0) + 1
    print(out)
  • 2、自定义函数 twonums_sum(n, lst),在列表 lst 中查找是否有两数之和等于 n,若有 则返回两数的下标,否则返回-1。对于一个不包含重复数字的有序列表[1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 29, 34, 54, 65],从键盘输入 n,调用函数 twonums_sum()输出满足条件的两个数的下标(找到一组即可且要求其中的一个数尽量小), 若所有数均不满足条件则输出“not found”。

    [输入样例]

    17

    [输出样例]

    (1, 10)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def twonums_sum(n, lst):
    for x in range(len(lst)):
    other = n - lst[x]
    if other in lst:
    return x, lst.index(other)
    return 'not found'


    if __name__ == '__main__':
    lst = [1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 29, 34, 54, 65]
    two_sum = eval(input('Please input the sum:'))
    print(twonums_sum(two_sum, lst))

    4.3 集合

    2_3