在转换前,需要先安装一下依赖:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bs41. 字典转换为xml:
def trans_dict_to_xml(data_dict): data_xml = [] for k in sorted(data_dict.keys()): # 遍历字典排序后的key v = data_dict.get(k) # 取出字典中key对应的value if k == 'detail' and not v.startswith('<![CDATA['): # 添加XML标记 v = '<![CDATA[{}]]>'.format(v) data_xml.append('<{key}>{value}</{key}>'.format(key=k, value=v)) return '<xml version="1.0" encoding="UTF-8" >{}</xml>'.format(''.join(data_xml)) # 返回XML
2. Xml转换为字典:
# 定义XML转字典的函数 def trans_xml_to_dict(data_xml): soup = BeautifulSoup(data_xml, features='xml') xml = soup.find('xml') # 解析XML if not xml: return {} data_dict = dict([(item.name, item.text) for item in xml.find_all()]) return data_dict
适用条件: 当只有偶数层数且内元组的个数为2个时元组才可进行转换为字典。
1. 元组转换为字典 tuple-> dict
可以直接通过dict()函数进行转换
EDUCATION_CHOICE = ( (0, '初中'), (1, '高中'), (2, '大专'), (3, '本科'), (4, '硕士'), (5, '博士'), ) print(dict(EDUCATION_CHOICE))打印结果:
{0: '初中', 1: '高中', 2: '大专', 3: '本科', 4: '硕士', 5: '博士'}2. 字典转换为元组 dict-> tuple
如果直接使用tuple()函数,转换成的元组将会是由key组成的元组。
dict_1 = {0: '初中', 1: '高中', 2: '大专', 3: '本科', 4: '硕士', 5: '博士'} print(tuple(dict_1))打印结果为:
(0, 1, 2, 3, 4, 5)可以发现如果直接tuple()函数并不能达到想要的效果,我们可以通过列表转换为元组的方式,将字典的key和value先装到列表里,然后再使用tuple()函数,即可完成转换:
dict_1 = {0: '初中', 1: '高中', 2: '大专', 3: '本科', 4: '硕士', 5: '博士'} print(tuple(dict_1)) data1 = [] for i in dict_1: data1.append((i, dict_1[i])) print(data1) print(tuple(data1))打印结果为:
(0, 1, 2, 3, 4, 5) [(0, '初中'), (1, '高中'), (2, '大专'), (3, '本科'), (4, '硕士'), (5, '博士')] ((0, '初中'), (1, '高中'), (2, '大专'), (3, '本科'), (4, '硕士'), (5, '博士'))总结:
1. 符合字典结构的元组可以直接通过dict()函数转换为字典。
2. 字典转换元组时,先需要通过遍历成列表,然后直接通过tuple()函数转换为元组。