dict嵌套升级以及作业讲解

嵌套字典:

dic = {
    'name':["alex",'wusir','taibai'],
    'py9':{
        "time":"1213",
        'learn_money':19800,
        'addr':'CBD'
    },
    'age':21
}

问题1: 怎样在name的键值对所对应的列表中添加人名:

解:可以现根据索引找到name所对应的列表,再根据列表方法添加

dic["name"].append("ritian")
print(dic)
{'name': ['alex', 'wusir', 'taibai', 'ritian'], 'py9': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD'}, 'age': 56}

问题2:怎样在name所对应的键值对列表中更改‘wusir’为全部大写

解:根据索引找到字典中的列表,列表中的元素,再用upper()方法更改

dic['name'][1] = dic['name'][1].upper()
print(dic)
{'name': ['alex', 'WUSIR', 'taibai', 'ritian'], 'py9': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD'}, 'age': 56}

  可以看到,这里使用了:dic['name'][1] = dic['name'][1].upper()

  相当于把原来的‘wusir’覆盖。

  这是因为字符串方法的upper()是有返回值的,并且不改变原来的字符串,所以要覆盖

dic['name'][1].upper()
print(dic)
{'name': ['alex', 'wusir', 'taibai', 'ritian'], 'py9': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD'}, 'age': 56}

 可以看到‘wusir’还是小写

问题3:给py9对应的字典添加一个键值对:'female':6

解:找到相应的键值对,使用updae()方法

dic['py9'].update({"female":6})
print(dic)
{'name': ['alex', 'WUSIR', 'taibai', 'ritian'], 'py9': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD', 'female': 6}, 'age': 56}

 

也可以使用setdefault(),直接添加的方法进行更改

问题四:

输入任意字符串,测试整数的个数

解;我认为,关键的步骤在于,如何判断字符串内容是否为数字

  所以我感觉关键步骤是str.isalnum()方法的使用

while 1:
    i = input("按下任意键开始,输入'exit'退出")
    if i == 'exit':
        break
    a = []
    while 1:
        j = input("请输入任意字符串")
        for k in j:
            if k.isalpha()==True:
                pass
            elif k.isalnum() == True:
                a.append(int(k))
        print("整数的个数是",len(a))
        break

 

 

但是这里有个问题,就是    k.isalpha()==True:和k.isalnum() == True:

对调就会报错

while 1:
    i = input("按下任意键开始,输入'exit'退出")
    if i == 'exit':
        break
  a = 1
while 1:
        j = input("请输入任意字符串")
        for k in j:
            if k.isalnum()==True:
                a.append(int(k))
            elif k.isalpha() == True:
                pass
        print("整数的个数是%d",len(a))
        break
按下任意键开始,输入'exit'退出asd
请输入任意字符串asd123
Traceback (most recent call last):
  File "C:/Users/admin/PycharmProjects/untitled1/dict嵌套及升级.py", line 72, in <module>
    a.append(int(k))
ValueError: invalid literal for int() with base 10: 'a'

  

 

posted @ 2019-06-15 17:40  DEVILNEVERCRY  阅读(119)  评论(0)    收藏  举报