python - 列表,字典的排序

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()

                
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值