字典值列表是否按顺序排序?

2024-09-26 17:53:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典,它的名字列表是键,值列表是三个(str,int,int):

stafflist={'Name1':['Position', register number, sales],
           'Name2':['Position', register number, sales],
           'Name3':['Position', register number, sales]}

我需要将数据格式化为:

注册号:职位、姓名、销售

注册号:职位、姓名、销售

注册号:职位、姓名、销售

其中,注册号按数字顺序排列,位置、名称和销售额与正确的注册号相关联。你知道吗

我可以通过转换到新列表来获得寄存器编号,如下所示:

    regnumbers=[]
        for empname in stafflist:
            regnumbers.append(stafflist[name][1])

    regnumber.sort()

    for regnum in regnumbers[:]:
       if regnum in stafflist[name][1]:
           print('Reg #,regnum,':')

但我无法打印相关值或键的内存。我所能做的就是得到一组其他的值来打印所有的寄存器号,而我根本无法得到要打印的键(名称)。你知道吗

如果不是很明显-完全是Python新手,请欣赏任何能说明这一点的线索!你知道吗


Tags: in名称registernumber列表职位position寄存器
2条回答

使用一个^{}-它有点像字典。你知道吗

import collections

# Sample data
staff_list = {
    "A": ["CEO", 1, 100000],
    "B": ["Clerk", 400, 2500],
    "C": ["Restocker", 200, 0],
}

new_staff_list = collections.OrderedDict()

# Sort by register number
# Sorting ahead of time is easier than sorting an OrderedDict
staff = sorted(staff_list.items(), key=lambda emp: emp[1][1])

for name, (position, number, sales) in staff:
    new_staff_list[number] = [position, name, sales]

print(new_staff_list[200])
# ['Restocker', 'C', 0]

与其创建只保存排序信息的已排序的regnumbers,不如遍历已排序的stafflist:

# dict.items() is a sequence of (key, value)  tuples
for key, value in sorted(stafflist.items(), key=lambda kv: kv[1][1]):
    print('Reg #{}, Name: {}'.format(value[1], key))

相关问题 更多 >

    热门问题