• python数据结构之字典


    1、python字典的定义

    1、用大括号{},以逗号分隔每个键值对,键与值之间用冒号连接

    2、键:需要不可变的数据结构,值可以是任意的数据对象

    3、字典是无序的,键在字典中必须是唯一,在字典中取值的方式是以键寻找相对应的的值

    a = {}
    c = dict()
    a
    {}
    c
    {}
    b = {'a':'hello','c':'you','b':'how'}
    a = [1,2,3]
    b = ['a','b','c']
    d = dict(zip(a,b))
    d
    {1: 'a', 2: 'b', 3: 'c'}
    
    给字典中的项value赋值
    a = {1:23}
    a[1] = 3
    a
    {1: 3}
    
    字典的访问
    b
    {'a': 'hello', 'c': 'you', 'b': 'how'}
    b.get('a')
    'hello'
    增:
    fruits
    {'a': 'apple', 'b': 'banana', 'g': 'grape', 'o': 'orange'}
    fruits.setdefault('martin',20)
    20
    fruits.setdefault('a','appleaaa')
    'apple'
    fruits
    {'a': 'apple', 'b': 'banana', 'g': 'grape', 'o': 'orange', 'martin': 20}
    
    fruits.update({3:5})
    fruits.update({'a':'appleupdate'})
    fruits
    {'a': 'appleupdate', 'b': 'banana', 'g': 'grape', 'o': 'orange', 'martin': 20, 3: 5}
    2)    setdefault:参数是key和value,如果key不存在,在添加key:value,如果key存在,什么也不做。
    3)    update:参数是key和value,不管key存不存在,都变成 key:value的形式。
    
    
    删除(工作中不常用)
    fruits
    {'a': 'appleupdate', 'b': 'banana', 'g': 'grape', 'o': 'orange', 'martin': 20, 3: 5}
    fruits.pop(3)
    5
    fruits
    {'a': 'appleupdate', 'b': 'banana', 'g': 'grape', 'o': 'orange', 'martin': 20}
    
    改:
    1、赋值
    2、update
    
    a
    {2: 9, 3: 5, 4: 9}
    a[0] = 8
    a
    {2: 9, 3: 5, 4: 9, 0: 8}
    a[2] = 8
    a
    {2: 8, 3: 5, 4: 9, 0: 8}
    a.update({3:10})
    a
    {2: 8, 3: 10, 4: 9, 0: 8}
    
    查
    a
    {2: 8, 3: 10, 4: 9, 0: 8}
    a.get(2)
    8
    a[0]
    8
    
    两种取值的区别:
    当key不存在的时候,get不会报错,
    通过[key]方式去取值的时候,会报错
    字典的遍历
    1for item in _dict:
             print itme
    
    2for k,v in a.items():
            print k,v
    
    a = {1:3,5:0,'ss':123}
    
    for item in a:
        print(item)
    
    a = {1:3,5:0,'ss':123}
    
    for k,v in a.items():
        print(k,v)


    当把字典当成序列的时候,指的是key组成的序列

    超市购物

    #coding:gbk
    import sys
    food_price = {'apple':5, 'orange': 8, 'banana':3, 'beef':40, 'pork':26, 'cocacola':3}
    
    while True:
        try:
            money = int(input('pls input your money: '))
            break
        except:
            print('your input in not conrrect,pls input a number')
            
    shooping_list = []
    
    while True:
        print('
     目前可购买的商品:')
        for food,price in food_price.items():
            print(food,price)
            
        if money < min(food_price.values()):
            print('
     sorry,you have not enough money to buy any food
    ')
            if shooping_list:
                print('
     你已经买了如下商品:
     %s' %shooping_list)
        print('
     你现在有%s,选择一支商品吧' % money)
        
        _choice = input('
     pls input your choice:')
        choice = _choice.strip()
        
        if choice in ['quit','exit','q']:
            print('
     你已经买了如下商品 
     %s' %shooping_list)
            sys.exit()
            
        if  choice not in food_price:
            print('
     你已经买了如下商品
     %s' %shooping_list)
            continue
        
        price = food_price[choice]
        print('
     你选择的商品:%s的价格:%s' %(choice,price))
        
        if money >= price:
            shooping_list.append(choice)
            money = money - price
            print('
    你的余额是 %s 
    ' % money)
        else:
            print('
    sorry,买不起,您剩余:%s$, %s 的价格是 %s $, 真穷!' % (money, choice, price))
            
    
                
  • 相关阅读:
    POJ 3630 Phone List/POJ 1056 【字典树】
    HDU 1074 Doing Homework【状态压缩DP】
    POJ 1077 Eight【八数码问题】
    状态压缩 POJ 1185 炮兵阵地【状态压缩DP】
    POJ 1806 Manhattan 2025
    POJ 3667 Hotel【经典的线段树】
    状态压缩 POJ 3254 Corn Fields【dp 状态压缩】
    ZOJ 3468 Dice War【PD求概率】
    POJ 2479 Maximum sum【求两个不重叠的连续子串的最大和】
    POJ 3735 Training little cats【矩阵的快速求幂】
  • 原文地址:https://www.cnblogs.com/hellojackyleon/p/8549039.html
Copyright © 2020-2023  润新知