• 基本用法:3《数据串:字典{}、列表[]》


    3 《数据串:字典{}、列表[]》

    (1)添加or修改 -- [list元素]  [dict: ]

    1 ## 1. 添加or修改列表元素字典值 都通过赋值语句
    2 list1 = ['小明','小红','小刚','小美']
    3 list1[1] = '小蓝'
    4 print(list1)
    5 
    6 dict1 = {'小明':''}
    7 dict1['小明'] = ''
    8 print(dict1)

     

    2)相互嵌套

    1 ## 2. 相互嵌套
    2 students=[['小明','小红','小刚','小美'],['小强','小兰','小伟','小芳']]
    3 print(students[1][3])    # 取出小芳
    4 
    5 scores = {
    6     '第一组':{'小明':95,'小红':90,'小刚':100,'小美':85},
    7     '第二组':{'小强':99,'小兰':89,'小伟':93,'小芳':88}
    8     }
    9 print(scores['第二组']['小芳'])    # 取出小芳的成绩

     

    3{字典}转换成【list嵌套元组tuple

     1 ## 3.{字典}转换成【list嵌套元组tuple】
     2 x={'a':3,'b':1,'c':5,'d':2}
     3 # AAA. 如果键不是数值,直接变成 列表嵌套元组。
     4 # a=[('a',3), ('b',1), ('c',5), ('d',2)]
     5 a=sorted(x.items())
     6 
     7 y={} # y={3:'a', 1:'b', 5:'c', 2: d'}
     8 for key,val in x.items():
     9     y[val]=key  # x的键值对调
    10 
    11 # BBB. 如果键是数值,升序排列,变成 列表嵌套元组。
    12 # b=[(1,'b'), (2,'d'), (3,'a'), (5,'c')]
    13 b=sorted(y.items())

     

    4)【合并字典】【合并列表】

     1 ## 4. 【合并字典】
     2 a={'a':1,'b':2,'c':3}
     3 b= {'aa':11,'bb':22,'cc':33}
     4 d=dict(a,**b) # 相当于列表a.entend(b)
     5 #{'a': 1, 'b': 2, 'c': 3, 'aa': 11, 'bb': 22, 'cc': 33}
     6 print(d)
     7 c = {}
     8 c.update(a) # c={'a':1,'b':2,'c':3}
     9 c.update(b)
    10 # c={'a': 1, 'b': 2, 'c': 3, 'aa': 11, 'bb': 22, 'cc': 33}
    11 print('
    ')
    12 
    13 ## 4. 【合并列表】
    14 a =  [91, 95, 97, 99]
    15 b =  [92, 93, 96, 98]
    16 ## 下面的结果(除了append)得出的列表是一样的!!
    17 a+=b        # [91, 95, 97, 99, 92, 93, 96, 98]
    18 a=a+b       # [91, 95, 97, 99, 92, 93, 96, 98]
    19 a.extend(b) # [91, 95, 97, 99, 92, 93, 96, 98]
    20 a.append(b) # [91, 95, 97, 99,[92, 93, 96, 98]]
    21 # b=[]整体作为一个元素
    22 a[0:0]=b      #[92, 93, 96, 98, 91, 95, 97, 99]
    23 # 使用切片??

     

    5)【直接遍历-字典dict中的值】

     1 # 5.【直接遍历-字典dict中的值】
     2 # (1) 大字典+小字典
     3 scores = {
     4     '第1组':{'小明':95,'小红':90,'小刚':100,'小美':85},
     5     '第3组':{'小强':99,'小兰':89,'小伟':93,'小芳':88}
     6     }
     7 for i,j in scores.items():
     8     print(i) #
     9     print(j) #
    10 for k in scores.values():
    11     print(k)
    12 
    13 # (2) 大字典+小字典+列表
    14 unit_rooms = {3:{301:[1,80],302:[1,80],303:[2,90],304:[2,90]},
    15              4:{401:[1,80],402:[1,80],403:[2,90],404:[2,90]},
    16              5:{501:[1,80],502:[1,80],503:[2,90],504:[2,90]}
    17             }
    18 for sub_dict in unit_rooms.values():
    19     for i,j in sub_dict.items():
    20         print('户室:%d
    朝向:%d
    面积:%d'%(i,j[0],j[1]))

     

    6)【取出list里面全部int / str

     1 # 6.【取出list里面全部int】
     2 a=[1,2,2,3,4]
     3 sum0=''
     4 k=0
     5 for k in range(len(a)-1):
     6     sum0=sum0+str(a[k])+','  #  1,2,2,3,4,(最后多余的逗号)
     7     k=k+1
     8 sum=sum0+str(a[-1])          #  1,2,2,3,4(没有最后多余的逗号)
     9 print(sum)
    10 
    11 
    12 
    13 # 6.【取出list里面全部str】
    14 list=['1','2','3','4','5']
    15 x=(',').join(list)  # 1,2,3,4,5
    16 print(x)

     

    7)【字符串分离.split() /合并.join()】

     1 # 7.【字符串分离.split() /合并.join()】
     2 list0=['你,我,他','1,2,3' ]
     3 for i in list0:
     4     a=i.split(',')  # ['你','我','他'] ['1','2','3']
     5     print(a)
     6     b=','.join(a)   # 你,我,他   1,2,3
     7     print(b)
     8 
     9 list1=['d','o','g']
    10 print(','.join(list1)) # d,o,g
    11 print('-'.join(list1)) # d-o-g

     

    8)【列表数字str变int】+【自动升序/降序】

    1 ##  8. 【列表数字str变int】+【自动升序/降序】
    2 x0=['2', '4', '1', '3']
    3 x=list(map(int,x0))   # x=[2,4,1,3]
    4 # 升序[1, 2, 3, 4]
    5 x2=x.sort(reverse=False)
    6 x2=sorted(x,reverse=False)
    7 # 降序[4, 3, 2, 1]
    8 x3=x.sort(reverse=True)
    9 x3=sorted(x,reverse=True)

     

    A. 合并+排序

     1 ## 作1:合并+排序
     2 c =  ['91', '95', '97', '99']
     3 d =  ['92', '93', '96', '98']
     4 ###c+=d    # ['91', '95', '97', '99', '92', '93', '96', '98']
     5 c.extend(d) # ['91', '95', '97', '99', '92', '93', '96', '98']
     6 print(c)
     7 x1=list(map(int,c))  # [91,95,97,99,92,93,96,98]
     8 x1.sort()   # 升序[91,92,93,95,96,97,98,99]
     9 print(x1)
    10 e =  ['91', '95', '97', '99']
    11 f =  ['92', '93', '96', '98']
    12 e+=f
    13 print(e)
    14 x2=list(map(int,e))
    15 x3=sorted(x2,reverse=True)  # 降序[99, 98, 97, 96, 95, 93, 92, 91]
    16 x4=sorted(x2,reverse=False)  # 升序[91, 92, 93, 95, 96, 97, 98, 99]
    17 print(x3)
    18 print(x4)
    19 print('
    ')

     

    B. 【算平均分】

     1 ## 作业2:算平均分
     2 scores = {'语文':89, '数学':95, '英语':80}
     3 sum=0
     4 def get_average(scores):
     5     for subject, score in scores.items():
     6         global sum
     7         print(subject)  # 科目
     8         print(score)    # 分数
     9         sum=sum+score
    10         print(sum)
    11         global ave_score
    12         ave_score = sum/len(scores)
    13 get_average(scores)
    14 print('
    总分是%d'%sum)
    15 print('平均分是%d'%ave_score)
    16 ## 同时取键:值
    17 for i,j in scores.items():
    18     print(i+':'+j)

     

    C. 【哈利波特学院-成绩】

     1 ## 作业3:哈利波特学院-成绩
     2 # (1)读取人名、各分数
     3 a=open('sample/scores.txt','r')
     4 b=a.readlines()
     5 a.close()
     6 print(b)
     7 
     8 # (2)计算总分,存入Scores11
     9 dict = {} # {'罗恩': 102, '哈利': 392}
    10 mark=[]  # [100,99,98,,,]
    11 for i in b:
    12     print(i)
    13     j=i.split(' ') # 最后一行是'
    '
    14     print(j)
    15     name=j[0]
    16     sum=0
    17 ## A. 计算总分
    18     for k in j[1:-1]:  # 不包括最后一行'
    '
    19         sum=sum+int(k)
    20         mark.append(k)
    21     dict[name]=sum
    22 print(dict)
    23 ## B. 提取字典中的键:值 写入scores11
    24 for n,m in dict.items():
    25     x=n+str(m)+'
    '
    26     print('最终成绩——'+x)
    27 # 下面是打开文件的另一种方式,为避免忘记close(),很常见
    28     with open('sample/scores11.txt','a') as a:
    29         c=a.writelines(x)  # <class string>
    30 ## mark=[]是为了复习一遍 【列表自动排序】
    31 print(mark)
    32 mark=list(map(int,mark))### 字符串str变整数int
    33 print(mark)
    34 mark.sort(reverse=True) ### 降序
    35 print(mark)
    36 print('
    ')
    37 ## (3)scores11排序
    38 dict1={}
    39 num=[]
    40 with open('sample/scores11.txt','r') as a:
    41     d=a.readlines()
    42 for i in d:
    43     n=i[0:-4]      # 1字符读取姓名
    44     m=int(i[-4:])  # 1字符读取分数,不加int会出现'
    '
    45     num.append(m)
    46     dict1[m]=n
    47 print(num)  #[102, 392, 570, 275]
    48 print(dict1)
    49 num.sort(reverse=True) # 降序
    50 print(num)  #[570, 392, 275, 102]
    51 with open('sample/scores12.txt','a') as a:
    52     for i in num:
    53         x=dict1[i]+str(i)+'
    '
    54         e=a.writelines(x)
    55         print(x)

     

  • 相关阅读:
    hdu2191(多重背包)
    hdu3664(递推dp)
    hdu2955(变形01背包)
    hdu1712(分组背包)
    hdu1114(完全背包)
    hdu4004(二分)
    hdu2870(dp求最大子矩阵)
    POJ 1979 Red and Black(水题,递归)
    POJ 1922 Ride to School(贪心+模拟)
    POJ 1182 食物链(种类并查集)
  • 原文地址:https://www.cnblogs.com/lj-attitudes0303/p/10354611.html
Copyright © 2020-2023  润新知