python编码问题,以及字典key值为中文时如何访问key的值。

本文探讨了在Windows环境下,由于本地默认编码与文件声明编码不一致导致的乱码问题。详细介绍了如何通过编码转换(如decode和encode方法)解决控制台打印时出现的乱码现象,提供了解决方案并给出了具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考连接:https://blog.youkuaiyun.com/w1573007/article/details/77199733

参考链接:https://www.cnblogs.com/Matthew-Lu/p/8384346.html

参考链接:https://www.cnblogs.com/testlife007/p/5163507.html

 

××××××××××××××

decode(“utf-8”):将utf-8解码为unicode,

encode(“utf-8”):将utf-8编码为utf-8.

××××××××××××××××××××××××××××××××××

 

 

乱码原因: 因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件。但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了。
解决方法:

在控制台打印的地方用一个转码就ok了,打印的时候这么写:

print myname.decode('UTF-8').encode('GBK')

也可以这样:

if (name['算法类型'.decode('UTF-8').encode('GBK')]  == "YANBAN"):
    print(name['算法类型'.decode('UTF-8').encode('GBK')] +  "is YANBAN" )

输出为“YANBAN   is   YANBAN”  。

比较通用的方法应该是:


import sys type = sys.getfilesystemencoding()
print myname.decode('UTF-8').encode(type)

 

 

### Python 字典 Key 的特性及使用方法 #### 1. 键的唯一性 在 Python 中,字典的键具有唯一性。如果尝试为已存在的键赋新,则会覆盖原来的[^2]。 #### 2. 不可变数据类型的限制 字典的键必须是不可变的数据类型,例如字符串、整数或元组(前提是元组内的元素也是不可变的)。这是因为哈希表依赖于键的不变性来快速定位存储位置。以下是合法和非法键的例子: ```python valid_keys = { "string_key": "value", # 字符串作为键 42: "integer_key_value", # 整数作为键 (1, 2): "tuple_as_key" # 元组作为键 } invalid_keys = { ["list"]: "not_valid" # 列表不是不可变类型,因此无法作为键 } ``` 上述代码中 `["list"]` 将引发错误,因为列表是可变类型。 #### 3. 遍历字典中的键 通过调用 `keys()` 方法可以获得字典中所有键的一个视图对象。此视图对象会在底层字典发生变化时动态更新[^1]。 ```python my_dict = {"apple": 10, "banana": 5, "cherry": 7} for key in my_dict.keys(): print(f"{key}: {my_dict[key]}") ``` #### 4. 修改字典中的键 由于字典的键一旦创建便不可直接修改,可以通过删除旧键并插入新键的方式实现间接修改。 ```python original_dict = {"old_key": "some value"} new_key = "new_key" original_dict[new_key] = original_dict.pop("old_key") # 删除旧键并将赋予新键 print(original_dict) # 输出 {'new_key': 'some value'} ``` #### 5. 反查键名 有时可能需要根据查找对应的键名称,在这种情况下可以构建一个反转映射字典[^3]。 ```python d1 = {"a": 1, "b": 2} reverse_mapping = {v: k for k, v in d1.items()} print(reverse_mapping[2]) # 输出 b ``` #### 6. 按键排序 虽然字典本身无序,但可以借助内置函数 `sorted()` 对其按键进行排序,并返回一个新的有序字典或者仅获取排序后的键列表[^4]。 ```python unsorted_dict = {"c": 3, "a": 1, "b": 2} ordered_by_keys = dict(sorted(unsorted_dict.items())) print(ordered_by_keys) # 输出 {'a': 1, 'b': 2, 'c': 3} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值