Python基础教程:列表字典的键值修改

枫铃3年前 (2021-10-03)Python248

list (修改列表的索引值)

循环一个列表时,最好不要对原列表有改变大小的操作,这样会影响你的最终结果。

#使用负索引进行修改列表
print('First')
lis = [11, 22, 33, 44, 55]
print(lis)
for num in range(len(lis)-1,-1,-1):
    if num % 2 != 0: 
        lis.pop(num)
else:
    print(lis)

#使用步长进行修改列表
print('Second')
lis = [11, 22, 33, 44, 55]
print(lis)
del lis[1::2]
print(lis)

#添加新的列表进行修改
print('Third')
lis = [11, 22, 33, 44, 55]
print(lis)
new_lis = list()
for num in range(len(lis)):
    if num % 2 == 0: 
        new_lis.append(lis[num])
else:
    lis = new_lis
print(lis)

dict

在循环中不可以改变字典的键值对(增加、删除)
RuntimeError: dictionary changed size during iteration

dict.fromkeys()

dic = {'k1': 'v1', 'k2': 'v2', 'name': 'alex'}

错误的示范

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:531509025
'''

for key in dic:
    if 'k' in key:
        dic.pop(key)
print(dic)

修改字典的内容需要把修改的键加入到空列表然后遍历修改字典的值

l1 = list()
for key in dic:
    if 'k' in key:
        l1.append(key)
print(l1)
for key in l1:
    dic.pop(key)
print(dic)

ValueError: unknown locale: UTF-8

File "/Users/wyl/Documents/effectmatrix/program/minetest/MCEdit-Unified-master/ENV/lib/python2.7/locale.py", line 545, in getdefaultlocale

    return _parse_localename(localename)

  File "/Users/wyl/Documents/effectmatrix/program/minetest/MCEdit-Unified-master/ENV/lib/python2.7/locale.py", line 477, in _parse_localename

    raise ValueError, 'unknown locale: %s' % localename

ValueError: unknown locale: UTF-8

解决方法:

1.在.bash_profile文件中加入

export LANG="en_US.UTF-8"

export LC_COLLATE="en_US.UTF-8"

export LC_CTYPE="en_US.UTF-8"

export LC_MESSAGES="en_US.UTF-8"

export LC_MONETARY="en_US.UTF-8"

export LC_NUMERIC="en_US.UTF-8"

export LC_TIME="en_US.UTF-8"

2.source 使用更新后的内容

source .bash_profile

测试

python -c 'import locale; print(locale.getdefaultlocale());'

异常处理

异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常是输入^C)Exception常规错误的基类StopIteration迭代器没有更多的值GeneratorExit生成器(generator)发生异常来通知退出StandardError所有的内建标准异常的基类ArithmeticError所有数值计算错误的基类FloatingPointError浮点计算错误OverflowError数值运算超出最大限制ZeroDivisionError除(或取模)零 (所有数据类型)AssertionError断言语句失败AttributeError对象没有这个属性EOFError没有内建输入,到达EOF 标记EnvironmentError操作系统错误的基类IOError输入/输出操作失败OSError操作系统错误WindowsError系统调用失败ImportError导入模块/对象失败LookupError无效数据查询的基类IndexError序列中没有此索引(index)KeyError映射中没有这个键MemoryError内存溢出错误(对于Python 解释器不是致命的)NameError未声明/初始化对象 (没有属性)UnboundLocalError访问未初始化的本地变量ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象RuntimeError一般的运行时错误NotImplementedError尚未实现的方法SyntaxErrorPython 语法错误IndentationError缩进错误TabErrorTab 和空格混用SystemError一般的解释器系统错误TypeError对类型无效的操作ValueError传入无效的参数UnicodeErrorUnicode 相关的错误UnicodeDecodeErrorUnicode 解码时的错误UnicodeEncodeErrorUnicode 编码时错误UnicodeTranslateErrorUnicode 转换时错误Warning警告的基类DeprecationWarning关于被弃用的特征的警告FutureWarning关于构造将来语义会有改变的警告OverflowWarning旧的关于自动提升为长整型(long)的警告PendingDeprecationWarning关于特性将会被废弃的警告RuntimeWarning可疑的运行时行为(runtime behavior)的警告SyntaxWarning可疑的语法的警告UserWarning用户代码生成的警告

序列化注意事项:

  • json: 传入传出为字符串
  • 文件打开使用’r’模式
  • 只能写一行
  • 只支持字典
json.dumps(data,sort_keys=True,indent=2,separators=(',',':'),ensure_ascii=False)

#sort_keys 排序
#indent 缩进
#separators 分隔符
#ensure_ascii 支持中文
  • pickle:传入传出为bytes类型
  • 文件打开使用’rb’模式
  • 支持任意类型
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:531509025
'''

print(pickle.loads(b'\x80\x03}q\x00X\x01\x00\x00\x001q\x01K\x04s.'))

#字符串的格式为'bytes',不是需要'encode()'
  • shelve:打开文件的参数增加’writeback=True’防止写入失败
  • 支持字典
import shelve
f = shelve.open('c',writeback=True)  

#创建文件  
#writeback = True 回写

相关文章

python中的any与all函数的区别

1、all函数用来判断元...

python 常用PEP8规范

一 代码编排 1 缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap...

一道问题引出的python中可变数据类型与不可变数据类型

一道问题引出的python中可变数据类型与不可变数据类型

一. 问题的提出 我们先来看两个对比 第一道题,当对象为整数时,最终结果:b = 2, a =...

Python字符与字节新编

Python字符与字节新编

字符 字符是一个信息单...

Django中cookie和session的存、取、删除

Django中: cookie的存: response = HttpResponse('登陆成功')...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。