將兩個列表合并成一個字典
keys_list = ['A', 'B', 'C']
values_list = ['blue', 'red', 'bold']
有三種方法實現方式:
1.使用Python/ target=_blank class=infotextkey>Python zip、dict函數
dict_method_1 = dict(zip(keys_list, values_list))
print(dict_method_1)
2. 使用帶有字典推導式的 zip 函數
dict_method_2 = {key:value for key, value in zip(keys_list, values_list)}
print(dict_method_2)
3.循環使用zip函數
items_tuples = zip(keys_list, values_list)
dict_method_3 = {}
for key, value in items_tuples:
if key in dict_method_3:
pass
else:
dict_method_3[key] = value
print(dict_method_3)
運行結果:
{'A': 'blue', 'B': 'red', 'C': 'bold'}
將兩個以上列表合并為一個列表
當有兩個或更多列表時,想要將它們全部收集到一個大列表中,其中小列表的所有第一項構成較大列表中的第一個列表
例如:有 4 個列表 [1,2,3]、['a','b','c']、['h','e','y']、[4,5,6]
要為這四個列表創建一個新列表 [[1,'a','h',4], [2,'b','e',5], [3,'c','y',6]]
def merge(*args, missing_val = None):
max_length = max([len(lst) for lst in args])
outList = []
for i in range(max_length):
outList.Append([args[k][i] if i < len(args[k]) else missing_val for k in range(len(args))])
return outList
merge([1,2,3],['a','b','c'],['h','e','y'],[4,5,6])
通過鍵值對字典列表進行排序
import operator
people = [
{
'name': 'John',
"age": 64
},
{
'name': 'J.NET',
"age": 34
},
{
'name': 'Ed',
"age": 24
},
{
'name': 'Sara',
"age": 64
},
{
'name': 'John',
"age": 32
},
{
'name': 'Jane',
"age": 34
},
{
'name': 'John',
"age": 99
},
]
people.sort(key=operator.itemgetter('age'))
print(people)
people.sort(key=operator.itemgetter('name'))
print(people)
運行結果:
[{'name': 'Ed', 'age': 24}, {'name': 'John', 'age': 32}, {'name': 'Janet', 'age': 34}, {'name': 'Jane', 'age': 34}, {'name': 'John', 'age': 64}, {'name': 'Sara', 'age': 64}, {'name': 'John', 'age': 99}]
[{'name': 'Ed', 'age': 24}, {'name': 'Jane', 'age': 34}, {'name': 'Janet', 'age': 34}, {'name': 'John', 'age': 32}, {'name': 'John', 'age': 64}, {'name': 'John', 'age': 99}, {'name': 'Sara', 'age': 64}]
列表的推導
列表推導可以在列表填寫里代替討厭的循環,其基本語法為
[ expression for item in list if conditional ]
squares = [x**2 for x in range(10)]
print(squares)
運行結果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]