开发者

python中字典和列表的相互嵌套问题详解

目录
  • 1.列表中存储字典:
    • 1.列表中存储多个字典
    • 2.访问列表中字典的值
    • 3.遍历访问多个值
  • 2.字典中存储列表
    • 1.访问字典中的列表元素
    • 2.访问字典中的值(字典中的值为列表)
  • 3.字典中存储字典
    • 1.字典中不能全部由字典元素组成,会报错。
    • 2.字典中的值可由字典组成
  • 4.容易出的小错误:
    • 总结

      首先明确:

      1.访问字典中的元素:dict_name[key] / dict_name.get(key)

      2编程客栈.访问列表中的元素:list_name[索引]

      1.列表中存储字典:

      1.列表中存储多个字典

      p={'name':'lin','age':21}
      y={'name':'xue','age':20}
      c=[p,y]
      print(c)

      输出结果:

      [{'name': 'Jonh', 'age': 18}, {'name': 'Marry', 'age': 19}]

      2.访问列表中字典的值

      print(f"person's name is {people[0].get('name')}")
      print(f"{people[1].get('name')}'s age is {people[1].get('age')}")
      #先用person[0/1]访问列表里的元素(字典),再用get方法访问字典里的值

      输出结果:

      person's name is Jonh

      Marry's age is 19

      3.遍历访问多个值

      for person in people:                                            
      #将列表中的字典,依次赋值给person                       
          print(f"{person['name']}'s age is {person['age']}")          
          #取出每个循环里变量person(字典)的键和值

      输出结果:

      Jonh's age is 18

      Marry's age is 19

      因为字典中有多个键值对,所以进行多层嵌套。

      外层嵌套访问列表中的每个字典,内层嵌套访问每个字典元素的键值对。

      for person in people:    
          #在每个遍历的字典里再进行嵌套(内层循环)
          for k,v in person.items():          
              print(f"{k}:{v}")

      输出结果:

      name:Jonh

      age:18

      name:Marry

      age:19name:Jonh

      age:18

      name:Marry

      age:19

      2.字典中存储列表

      1.访问字典中的列表元素

      先用list[索引]访问列表中的元素,用dict[key]方法访问字典中的值。

      favourite_places={
          'lin':['beijing','tianjin'],
          'jing':['chengdu','leshan'],
          'huang':['shenzhen']
      }
      #访问字典中的值可以用:dict_name[key]
      print(favourite_places['lin'])
      #访问列表里面的元素用索引:list_name[索引]
      print(favourite_places['lin'][0].title())

      输出结果:

      ['beijing', 'tianjin']

      Beijing

      循环访问字典中列表的元素,也是要用dict_name[key]先访问字典中的值(列表)

      for i in favourite_places['lin']:     
          print(i.title())

      输出结果:

      Beijing

      Tianjin

      2.访问字典中的值(字典中的值为列表)

      注意:直接访问字典中的值,会以列表的形式呈现。

      for name,place in favourite_places.items():
          print(f"{name.title()}'s favourite places are {place}")

       输出结果:

      Lin's favourite places are ['beijing', 'tianjin']

      Jing's favourite places are ['chengdu', 'leshan']

      Huang's favourite places are ['shenzhen']

      为了避免,要进行循环嵌套

      for names,places in favourite_places.items():  #对三个键值对先进行一个大循环
          print(f'{names.title()} favourite places are:') #在大循环里每一组键值对开头先打印这句话
          for place in places:      #之后再对值进行一个小循环,打印出值中的每个元素
           www.cppcns.com   print(place.title())

      输出结果:

      Lin favourite places are:

      Beijing

      Tianjin

      Jing favourite places are:

      Chengdu

      Leshan

      Huang favourite places are:

      Shenzhen

      3编程客栈.字典中存储字典

      1.字典中不能全部由字典元素组成,会报错。

      p={'name':'lin','age':21}
      y={'name':'xue','age':20}
      c={p,y}
      print(c)

      TypeError               &nwww.cppcns.combsp;                 Traceback (most recent call last)

      <ipython-input-46-4127ab9ea962> in <module>

            1 p={'name':'lin','age':21}

            2 y={'name':'xue','age':20}

      ----> 3 c={p,y}

            4 print(c)

      TypeError: unhashable type: 'dict'

      2.字典中的值可由字典组成

      users={
          'a':{'name':'lin','age':21},
          'b':{'name':'xue','age':20}
      }
      print('-----------直接访问输出-------------------')
      print(users['a']['name'],users['a']['age'])
      print(users['b']['name'],users['b']['age'])
      print('\n-------编程客栈----循环嵌套的方法输出-------------------')
      for username,userinfo in users.items():
          print('\n'+username+':')
          for name,age in userinfo.items():
              print(name,age)

      输出结果:

      -----------直接访问输出-------------------

      lin 21

      xue 20

      -----------循环嵌套的方法输出-------------------

      a:

      name lin

      age 21

      b:

      name xue

      age 20

      4.容易出的小错误:

      1.访问顺序: 可以用dict_name[key] / dict_name.get(key)访问字典的值,也可以用列表索引list_name[索引]访问列表的值。但是要注意哪个在外,哪个在内,先访问外层,再访问内层,直接访问内层的会出错。

      2.字典的值为列表,访问的结果是输出整个列表 需要嵌套循环遍历里面的键值对。

      3.字典中不能全部由字典元素组成

      总结

      本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜