将列表中的元素用特定的符号连接成一个字符串:
In [1]: list1 = ['a','b','c']
In [2]: str1 = ''.join(list1)
In [3]: str1
Out[3]: 'abc'
例子中用空字符连接,也就是元素之间直接连接。也可以用别的字符,如“-”,如下所示:
In [4]: str1 = '-'.join(list1)
In [5]: str1
Out[5]: 'a-b-c'
不过,上述例子仅适用与列表中的元素都是字符串,如果列表中还包含数值等其他类型元素,可以增加一步将列表中的每个元素都转字符串,如下:
In [8]: list1 = ['a',7,'b',8,'c']
In [9]: list2 = [str(it) for it in list1]
In [10]: list2
Out[10]: ['a', '7', 'b', '8', 'c']
或者还有列表中包含列表元素:
In [11]: list1 = ['a',7,'b',8,'c',['e',9]]
In [12]: list2 = [str(it) for it in list1]
In [13]: list2
Out[13]: ['a', '7', 'b', '8', 'c', "['e', 9]"]
实际业务中可能会碰到一种情况,列表中包含字符串,数值和列表类型元素,需要脱去列表最外层的中括号,只得到列表中的内容。如列表为:[1, ‘a’, [‘b’]],需要得到的结果为:1, ‘a’, [‘b’]。这样我们可以先将列表中强制转字符串,然后截取字符串,如下:
In [14]: list1 = ['a',7,'b',8,'c',['e',9]]
In [15]: str1 = str(list1)
In [16]: str1
Out[16]: "['a', 7, 'b', 8, 'c', ['e', 9]]"
In [17]: str2 = str1[1:-1]
In [18]: str2
Out[18]: "'a', 7, 'b', 8, 'c', ['e', 9]"
这样在print()或者写入到txt文件的实际都不会看到外层的双引号了。
如果字符串中没有额外的分隔符,可直接用list转换:
In [23]: str1 = 'aabbcc'
In [24]: list1 = list(str1)
In [25]: list1
Out[25]: ['a', 'a', 'b', 'b', 'c', 'c']
若字符串中同样的分隔符重复出现,则用分割法返回列表:
In [26]: str1 = 'aa,bb,cc'
In [27]: list1 = str1.split(',')
In [28]: list1
Out[28]: ['aa', 'bb', 'cc']
若字符串中是列表的形式,可获取字符串内容,从而得到列表:
In [30]: str1 = "['a', 'a', 'b', 'b', 'c', 'c']"
In [31]: list1 = eval(str1)
In [32]: list1
Out[32]: ['a', 'a', 'b', 'b', 'c', 'c']
两个列表一一对应,分别表示key和value,如下:
In [33]: key1 = ['1','2','3']
In [34]: val1 = ['a','b','c']
In [35]: dic1 = dict(zip(key1,val1))
In [36]: dic1
Out[36]: {'1': 'a', '2': 'b', '3': 'c'}
In [37]: zip(key1,val1)
Out[37]: <zip at 0x215aee8ab88>
In [39]: list(zip(key1,val1))
Out[39]: [('1', 'a'), ('2', 'b'), ('3', 'c')]
zip函数其实就是将两个列表一一对应的元素放到一起,结果为[(‘1’, ‘a’), (‘2’ ,‘b’), (‘3’, ‘c’)],python3为了节省内存压缩成一个对象,通过list转换可以看到实际的结果。
列表中的元素均为列表,其中的每一个列表都是一对key-value。
In [40]: list1 = [['1','a'], ['2','b'], ['3','c']]
In [41]: dic1 = dict(list1)
In [42]: dic1
Out[42]: {'1': 'a', '2': 'b', '3': 'c'}
In [43]: dic1 = {'1': 'a', '2': 'b', '3': 'c'}
In [44]: list(dic1)
Out[44]: ['1', '2', '3']
In [45]: list(dic1.keys())
Out[45]: ['1', '2', '3']
In [46]: list(dic1.values())
Out[46]: ['a', 'b', 'c']
In [47]: dic1.keys()
Out[47]: dict_keys(['1', '2', '3'])
In [48]: dic1.values()
Out[48]: dict_values(['a', 'b', 'c'])
例子中我们看到,字典直接转list只能将其中的key提取出来形成一个列表。字典中的关键字和值需要分别获取然后转列表。
字符串内容是字典,则用eval获取字符串内容:
In [49]: str2 = "{'1': 'a', '2': 'b', '3': 'c'}"
In [50]: eval(str2)
Out[50]: {'1': 'a', '2': 'b', '3': 'c'}
还有一种方法是用json包中的函数,将json格式字符串转为字典。json格式字符串要求内容中的字符串必须用双引号,具体的json格式可自行百度。
In [53]: import json
In [54]: str2 = '{"a":1,"b":2}'
In [55]: json.loads(str2)
Out[55]: {'a': 1, 'b': 2}
str强制转换:
In [56]: dic = {'1': 'a', '2': 'b', '3': 'c'}
In [57]: str(dic)
Out[57]: "{'1': 'a', '2': 'b', '3': 'c'}"
json.dumps转换:
In [56]: dic = {'1': 'a', '2': 'b', '3': 'c'}
In [58]: json.dumps(dic)
Out[58]: '{"1": "a", "2": "b", "3": "c"}'
使用str强制转换:
In [72]: tup1 = ('a','b','c')
In [73]: str(tup1)
Out[73]: "('a', 'b', 'c')"
用字符分割:
In [74]: ''.join(tup1)
Out[74]: 'abc'
直接用tuple强制转:
In [75]: str1 = 'abc'
In [76]: tuple(str1)
Out[76]: ('a', 'b', 'c')
字符串中包含元组,用eval获取字符串
In [77]: str1 = "('a', 'b', 'c')"
In [78]: tup1 = eval(str1)
In [79]: tup1
Out[79]: ('a', 'b', 'c')
In [81]: tup1 = ('a', 'b', 'c')
In [82]: list(tup1)
Out[82]: ['a', 'b', 'c']
In [83]: list1 = ['a', 'b', 'c']
In [84]: tuple(list1)
Out[84]: ('a', 'b', 'c')
类似列表转字典,用zip函数过渡,之后用dict转换:
In [66]: tup1 = ('a','b','c')
In [67]: tup2 = (1,2,3)
In [68]: dict(zip(tup1,tup2))
Out[68]: {'a': 1, 'b': 2, 'c': 3}
字典的key和value分别用tuple转为元组:
In [69]: dic = {'a': 1, 'b': 2, 'c': 3}
In [70]: tuple(dic.keys())
Out[70]: ('a', 'b', 'c')
In [71]: tuple(dic.values())
Out[71]: (1, 2, 3)
参考文献:
https://www.cnblogs.com/who-care/p/9306800.html
https://www.runoob.com/python/python-func-zip.html
https://www.jb51.net/article/152933.htm