Python学习

1、字典综述

  数据类型划分:可变数据类型  不可变数据类型

  可变数据类型(不可哈希):list  dict  set

  不可变数据类型(可哈希):元祖  bool  int  str

  dict  key  必须是不可变数据类型,可哈希

       value  任意数据类型

  dict  优点:二分法查询

          存储大量的关系型数据

      缺点:无序的(3.5及以前的版本)

2、字典的操作

  1)增

    直接操作:没有键值对时则添加  有键值对时覆盖原数据

    setdefault('name','Shark'):没有键值对时则添加  有键值对时不操作

dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
#   增:
dic1['high'] = 185  #没有键值对,添加
dic1['age'] = 16  #如果有键,则值覆盖

dic1.setdefault('weight')  # 有键值对,不做任何改变,没有才添加。
dic1.setdefault('weight',150)
dic1.setdefault('name','二哥')
print(dic1)

  2)删

    pop()  有返回值,可按返回的键值删除字典数据

    pop('Shark',None)  没有键值对时,后面的数据不写会报错

    popitem()  有返回值,返回元祖,随机删除键值对

    clear()  清空字典

    del dic1['name']  删除单条数据,没有此键时会报错

    del dic1  删除字典

dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
#
print(dic1.pop('age'))   # 有返回值,按键去删除
print(dic1.pop('二哥',None))   # 可设置返回值
print(dic1)

print(dic1.popitem())  # 随机删除 有返回值 元组里面是删除的键值。
# print(dic1)

del dic1['name1']
print(dic1)
del dic1
print(dic1)

dic1.clear() #清空字典

  3)改

    直接改

    update()

dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
#  改  update
dic1['age'] = 16

dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic)  # dic2更新,有的数据覆盖,没有的添加

print(dic)
print(dic2)

  4)查

    直接查:没有此键会报错

    dic1.get()

    dic1.key()    打印键值

    dic1.values()    打印数值

    dic1.items()   打印键值对(元祖)

dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
#
print(dic1.keys(),type(dic1.keys()))
print(dic1.values())
print(dic1.items())

for k,v in dic1.items():
    print(k,v)

v1 = dic1['name']
print(v1)

v2 = dic1['name1']  # 报错
print(v2)

print(dic1.get('name1','没有这个键'))

3、面试题

  用一行代码实现数据的交换

#   用一行代码实现数据的交换
a,b = 1,2
print(a,b)

a,b = b,a
print(a,b)

4、相关练习

tu = (
    'alex',
    [
        11,
        22,
        {
            'k1':'v1',
            'k2':[
                'age',
                'name'
            ],
            'k3':(11,22,33)
        },
        44
    ]
)

#   a)讲述元祖的特性
# 元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。
# Python 的元组与列表类似,不同之处在于元组的元素不能修改。
# 元组使用小括号,列表使用方括号。
# 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

#   b)请问tu变量中的第一个元素'alex'是否可被修改?
#   不可以

#   c)请在元祖tu中添加一个元素'Seven'
li = tu[1][2]['k2']
li.append('Seven')
tu[1][2]['k2'] = li
print(tu[1][2]['k2'])
dic = {
    'k1':'v1',
    'k2':'v2',
    'k3':[11,22,33]
}

#   a)请循环输出所有的key
for k in dic:
    print(k)

#   b)请循环输出所有的value
for k in dic:
    print(dic[k])

#   c)请循环输出所有的 key 和 value
for k in dic:
    print(k,dic[k])

#   d)请在字典中添加一个键值对,'k4':'v4',输出添加后的字典
dic.setdefault('k4','v4')
print(dic)

#   e)请在修改字典中'k1'对应的值为'alex',输出修改后的字典
dic['k1'] = 'alex'
print(dic)

#   f)请在k3对应的值中追加一个元素44,输出修改后的字典
li = dic['k3']
li.append(44)
dic['k3'] = li
print(dic)

#   f)请在k3对应的值的第1个位置插入元素18,输出修改后的字典
lis = dic['k3']
lis.insert(0,18)
dic['k3'] = lis
print(dic)
li = [11,22,33,44,55,66,77,88,99,90]
#   将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中

dic = { }
more = []
less = []
for i in li:
    if i >= 66:
        more.append(i)
    else:
        less.append(i)
dic.setdefault('k1',more)
dic.setdefault('k2',less)
print(dic)
#   输出商品列表,用户输入序号,显示用户选中的商品
#   商品 li = ["手机", "电脑", '鼠标垫', '游艇']
#   要求:1:页面显示 序号 + 商品名称,如:
#       1 手机
#            2 电脑
#
#       2: 用户输入选择的商品序号,然后打印商品名称
#       3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
#       4:用户输入Q或者q,退出程序。

li = ['手机','电脑','鼠标垫','游艇']
dic = {}
for i in range(len(li)):
    dic.setdefault(i+1,li[i])
for k in dic:
    print(k,dic[k])

for n in dic:
    num = input('请输入您的选择:').strip()
    if num.isalpha():
        if num.upper() == 'Q':
            break
    elif num.isdigit():
        if int(num) == n:
            print(dic[n])
            break
        else:
            print('您的商品只有火星才有,本宝宝委屈。。。')
            continue
原文地址:https://www.cnblogs.com/SharkJiao/p/9337635.html