python - 列表,字典的排序_python 对列表里面的字典排序_天下·第二的博客-CSDN博客
# 序列解包(unpack)用于字典时,默认是对“键”进行操作; 如果需要对键值对操作,则需要使用 items();如果需要对“值”进行操作,则需要使用 values()。
# 在python中,**作为运算符表示乘方,类似的*表示乘法。
# 解包是指将一个集合中的元素分别赋值给多个变量的过程。
# 序列解包可以用于元组、列表、字典。序列解包可以让我们方便的对多个变量赋值。
# 在Python中,我们使用星号(*)表示可迭代对象的解包操作。
# *对列表解包
'''
>>> a, b, *rest = [1, 2, 3, 4]
>>> print(a, b, rest)
1 2 [3, 4]
'''
# **对字典解包 https://deepinout.com/python/python-qa/j_how-to-unpack-a-dictionary-in-python_zh.html
# 使用字典解包的一个示例是将字典中的键值对分别赋值给变量。
# 以下代码演示了如何将字典的三个键值对解包成三个变量:
'''
>>> person = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
>>> name, age, city = person.values()
>>> print(name, age, city)
Alice 25 Beijing
使用person.values()方法获取字典中的所有值,并将它们解包为三个变量name、age和city。
也可以使用person.keys()方法获取字典中的所有键,并将它们解包为变量。
>>> person = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
>>> name, age, city = person.keys()
>>> print(name, age, city)
name age city
将字典中的三个键解包成了三个变量name、age和city。
如何在解包过程中跳过某些键或值?
有时候,我们希望在解包字典时跳过某些键或值,而不是将它们赋值给变量。这可以通过使用下划线(_)来实现。
下划线是 Python 中一个特殊的变量名,表示不关心的值。
>>> person = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
>>> name, _, city = person.values()
>>> print(name, city)
Alice Beijing
使用下划线跳过了age这个键值对。因为我们不关心age的值,所以用_代替它。
如何使用python中的解包:https://baijiahao.baidu.com/s?id=1770545615321633044&wfr=spider&for=pc
'''
# 在Python中,字典是一个包含键值对的无序集合。另一种用法是将字典解包为关键字参数。
# 函数形参(定义函数时,收集参数)*代表收集参数,**代表收集关键字参数。
# 函数实参(调用函数时,分配参数)使用 *和 **调用函数,类似对元组和字典进行解包(拆包)。
'''
def fn1(a,b,c):
print(a, b, c)
x = (1,2,3) # 元组数据
y = [4,5,6] # 列表数据
z = {'a':7, 'b':8, 'c':9} # 字典数据
fn1(*x) # 元组解包 *
fn1(*y) # 列表解包 *
fn1(**z) # 字典解包 通过 **对字典进行解包
# 输出为
1 2 3
4 5 6
7 8 9
>>> person = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
>>> print("{name} is {age} years old and lives in {city}.".format(**person))
Alice is 25 years old and lives in Beijing.
使用**person解包字典,将字典中的键值对作为关键字参数传递给format()方法。
'''
# PL_CH_CE_LUN ///< LSB to MSB
nand_channel_num = 16
nand_target_num = 8
nand_lun_num = 2
def to_die_id(ch, ce, lun):
ret = lun
ret *= nand_target_num
ret += ce
ret *= nand_channel_num
ret += ch
#print(f"ch: {ch} ce: {ce} lun: {lun} --> die_id: {ret}")
return ret
def out_sorted_die_id(die_id_list):
die_id_list.sort(key = lambda die_id:(die_id['DIE_ID']))
for die_id in die_id_list:
#print(die_id)
#print('CH: {:3d}, CE: {:3d}, LUN:{:3d}, DIEID: {:3d}'.format(die_id['CH'], die_id['CE'],die_id['LUN'],die_id['DIE_ID']))
print('CH:{CH:3d}, CE:{CE:3d}, LUN:{LUN:3d}, DIEID:{DIE_ID:3d}'.format(**die_id))
def print_sys_die_id(ch = nand_channel_num, ce = nand_target_num, lun = nand_channel_num):
dieid_list =[]
for ch_idx in range(nand_channel_num):
for ce_idx in range(nand_target_num):
for lun_idx in range(nand_lun_num):
die_id = to_die_id(ch_idx, ce_idx, lun_idx)
d = {}
d['CH'] = ch_idx
d['CE'] = ce_idx
d['LUN'] = lun_idx
d['DIE_ID'] = die_id
dieid_list.append(d)
print("######################################")
out_sorted_die_id(dieid_list)
def out_loading():
import time
print("---RUNOOB EXAMPLE : Loading 效果---")
print("Loading",end = "")
for i in range(20):
print(".",end = '',flush = True)
time.sleep(0.5)
if __name__ == "__main__":
out_loading()
print_sys_die_id()