zoukankan      html  css  js  c++  java
  • Python基础14 字典的创建修改访问和遍历 popitem() keys() values() items()

      1 #字典
      2 
      3 #字典是可变的,可迭代的一种数据结构
      4 #字典结构分为两个部分组成
      5 #key 键视图  value 值视图
      6 #key不能包括有重复的数据,但是value可以
      7 
      8 #创建字典
      9 #用dict()来创建或者用{:}来创建
     10 
     11 a=dict({1:"",2:"",3:"",4:"",5:"",6:""});
     12 #这样我们就建立了一个key和value对应的字典
     13 print(a);
     14 
     15 b={1:"",2:""};
     16 #这样也创建了一个字典
     17 print(b);
     18 
     19 #也可以用元组组合来创建一个字典
     20 t1=(1,"?");
     21 t2=(2,"!");
     22 t3=(3,"@");
     23 t4=(4,"#");
     24 t_all=(t1,t2,t3);
     25 print("t1={0}
    t2={1}
    t3={2}
    ".format(t_all[0],t_all[1],t_all[2]));
     26 #这样我们就组成了一个由三个规则的元组组成的大元组
     27 #而这个大的元组,是存在迭代性的
     28 #这就可以用dict(iterable);
     29 c=dict(t_all);
     30 print(c);
     31 #这样就通过元组生成了一个字典
     32 
     33 #那么列表是否也有这种性质呢?
     34 l1=[1,"列表"];
     35 l2=[2,"牌面"];
     36 l_all=[l1,l2];
     37 print("l1={0}
    l2={1}
    ".format(l_all[0],l_all[1]));
     38 d=dict(l_all);
     39 print(d);
     40 #可以发现,列表也是可以完成这个操作的
     41 
     42 #还有一种比较特殊的创建方法
     43 #但是它只能创建字符串类型的字典
     44 #dict(key=value );
     45 #这样的形式,而且key必须是字符串类型
     46 
     47 e=dict(cc="ddd",dd="eee" );
     48 print(e);
     49 #而且要注意的是
     50 #key是字符串类型,但是不能加上单引号或者双引号
     51 
     52 #比较鸡肋的是如果你想输入的key是数字型字符串
     53 #那么你必然不会成功
     54 #e=dict(100="ddd",200="eee");
     55 #这样的式子,他不会认为是字符串,而是认为是数字数据
     56 e=dict(s100 ="dssdd",s200="eddee");
     57 #而只有这样子才能被识别成字符串
     58 print(e);
     59 
     60 print("/////////////////////////////////");
     61 
     62 #修改字典
     63 #最简单的方法
     64 #直接利用字典给出的索引来修改
     65 
     66 f={10:"100",20:"C",30:40};
     67 print(f);
     68 f[10]="";
     69 print(f);
     70 #这里就知道key10对应value被改变了
     71 
     72 #通过del也可以删除字典的键值对
     73 del f[20];
     74 #但是要注意,del不是函数而是一个语句
     75 #但是如果没有找到删除的值,就会抛出异常
     76 #del f[20];
     77 
     78 #pop(key,value)
     79 #这里也可以使用pop()来删除
     80 #返还值依然是删除的值 value
     81 #如果没有找到
     82 #不会抛出异常,但是会返还之前查询的value
     83 
     84 f={10:"100",20:"C",30:40};
     85 print("我删除了:",f.pop(10));
     86 print(f);
     87 print("我可能删除了:",f.pop(20,"C"));
     88 print(f);
     89 
     90 #如果我们的pop()key写对了value不正确会发生什么?
     91 f={10:"100",20:"C",30:40};
     92 print("我可能删除了:",f.pop(10,"C"));
     93 print(f);
     94 #这里我们看到key10的对还是被删除了
     95 f={10:"100",20:"C",30:40};
     96 print("我可能删除了:",f.pop(101,"C"));
     97 print(f);
     98 #value是正确但是key是错误的,就不会正确的删除
     99 
    100 #popitem()
    101 #任意删除一组键值对,然后把删除的这组键值对用元组的形式表示出来
    102 
    103 f={10:"100",20:"C",30:40};
    104 print("我删除了:",f.popitem());
    105 print(f);
    106 print("我删除了:",type(f.popitem()));
    107 print(f);
    108 
    109 print("////////////////////////////////");
    110 
    111 #字典的访问
    112 #items()
    113 #返还字典内的所有元素
    114 f={10:"100",20:"C",30:40};
    115 print(f.items());
    116 #会以一种更直观的格式呈现
    117 
    118 #keys()
    119 #展示字典内的所有key键
    120 print(f.keys());
    121 
    122 #values()
    123 #展示字典内的所有value值
    124 print(f.values());
    125 
    126 #get(key,value)
    127 #通过键来找到对应的value并返回
    128 #如果没有找到就会返回上面填写的value值
    129 print(f.get(10));
    130 print(f.get(1000,"找不到!"));
    131 #但是没有填写默认的value的值
    132 #没有找到的话就没有返回值
    133 print(f.get(555));
    134 #None是返还值
    135 
    136 #此外还可以用in和not in来判断是否在字典内
    137 #但这只在PythonShell内有用
    138 '''
    139 例如这样
    140     100 in f
    141     >>> Ture
    142     "S" in f
    143     >>> False
    144 
    145 '''
    146 
    147 #遍历字典
    148 #还是利用for 迭代实现
    149 #这里就之举出一个特殊的例子
    150 
    151 for x ,y in f.items():
    152     print("Key:{0}--Value:{1}".format(x,y));
    153 #这里要搞清楚几个点
    154 #首先items生成的是什么?
    155 #items返回的是键值对的元组序列,所以这里我们用x和y
    156 #对元组中拆包出来的两个变量
    157 g={10:100};
    158 for x ,y in g.items():
    159     print("Key:{0}--Value:{1}".format(x,y));
    160     print(type(x),type(y));
    161     print(type(g.items()))
    162 
    163 print("///////////////////////////////////");
    164 
    165 #字典的推导式
    166 #因为key键和value值两组数据
    167 #所以字典的推导式就相对灵活许多
    168 
    169 aa={1:10,2:20,3:33};
    170 bb={k:v for k,v in aa.items() if(v/k==10)};
    171 print(bb);
    172 #这里我们就成功完成了一个字典的推导式
    173 #这里的基本相对的就是
    174 '''
    175     for k,v in aa.items():
    176         if(v/k==10):
    177             key=k;
    178             value=v;
    179 '''
    180 #基本和列表的推导式
    181 '''
    182     for k,v in aa.keys():
    183         if(v/k==10):
    184             key=k;
    185 
    186 '''
    187 bb={k for k,v in aa.items() if(v/k==10)};
    188 print(bb);
    189 #这里就只读取了key的值
    190 bb={k*20:v+20 for k,v in aa.items() if(v/k==10)};
    191 print(bb);
    悟已往之不谏,知来者之可追
  • 相关阅读:
    tensorflow2.0 GPU和CPU 时间对比
    第一次使用FileZilla Server
    PremiumSoft Navicat 15 for Oracle中文破解版安装教程
    Unmapped Spring configuration files found. Please configure Spring facet or use 'Create Default Context' to add one including all unmapped files.
    ng : 无法加载文件 D: odejs ode_global g.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
    angular
    Github上优秀的go项目
    win10---file explore 中remove quick access folder
    react--useEffect使用
    linux---cat 和 grep 的妙用
  • 原文地址:https://www.cnblogs.com/ljh-study/p/13770929.html
Copyright © 2011-2022 走看看