天天看点

Python学习:字典

Python学习:字典

1.字典是一系列键-值对。每个键都与一个值相关联,可以通过键来访问相应的值。与键相关联的值可以是数字、字符串、列表、字典或者任何的Python对象。

2.Python不关心字典中键-值对的存储顺序,只关心键和值之间的关联关系。也就是不能像列表中一样通过角标来访问键-值对。

3.使用字典,包括创建字典、访问字典中的值、添加键-值对、修改字典中的值、删除键-值对。

# 创建5个字典,描述某公司员工情况
employee_0 = {
    'name': 'jack', 'age': 30, 'sex': 'male', 
    'position': 'intermediate engineer',
    'score': 91
    }

employee_1 = {
    'name': 'nick', 'age': 25, 'sex': 'male', 
    'position': 'junior engineer',
    'score': 85
    }
    
employee_2 = {
    'name': 'jason', 'age': 28, 'sex': 'male', 
    'position': 'super engineer',
    'score': 95
    }
    
employee_3 = {
    'name': 'tom', 'age': 35, 'sex': 'male', 
    'position': 'expert',
    'score': 98
    }
    
employee_4 = {
    'name': 'jacky', 'age': 33, 'sex': 'male', 
    'position': 'manager',
    'score': 95
    }
    
# 创建字典列表
employees = [employee_0, employee_1, employee_2, employee_3, employee_4]

# 创建空字典,待用户输入
employee = {}
while True:
    employee['name'] = input("Please give the empolyee's name: ")
    if employee['name'] == '':
        break
    employee['age'] = input("Please give the empolyee's age: ")
    if employee['age'] == '':
        break
    employee['age'] = int(employee['age'])
    employee['sex'] = input("Please give the empolyee's sex: ")
    if employee['sex'] == '':
        break
    employee['position'] = input("Please give the empolyee's position: ")
    if employee['position'] == '':
        break
    employee['score'] = input("Please give the empolyee's score: ")
    if employee['score'] == '':
        break
    employee['score'] = int(employee['score'])
    employees.append(employee)
    
    end_of_input = input("Do you want to continue? (Y/n) ")
    if end_of_input.lower() != 'y':
        break
     
# 按一定格式输出列表中的字典元素   
print("\nName      Age       Sex          Position                     score   ")
employee_num = len(employees)
while employee_num:
    employee_num -= 1
    print(
        employees[employee_num]['name'] + "      " + 
        str(employees[employee_num]['age']) + "      " + 
        employees[employee_num]['sex'] + "      " + 
        employees[employee_num]['position'] + "                    " + 
        str(employees[employee_num]['score']) + "   "
        )

employee_num = len(employees)
while employee_num:
    employee_num -= 1
    print("\nEmployee " + str(employee_num))
    for key, value in employees[employee_num].items():
        if key == 'age' or key == 'score':
            print(key + ": " + str(value))
        else:
            print(key + ": " + value)

# 输出列表中包含哪些员工信息
keys = ['']
employee_num = len(employees)
while employee_num:
    employee_num -= 1
    for key_temp in employees[employee_num].keys():
        keys_num = 0
        for key in keys:
            if key_temp != key:
                keys_num += 1
        if keys_num == len(keys):
            keys.append(key_temp)
keys.pop(0)
print(keys)

# 找员工中是否有jack
names = []
employee_num = len(employees)
while employee_num:
    employee_num -= 1
    for name in employees[employee_num].values():
        if name == 'jack':
            names.append(name)
print(names)

# 列出所有员工评分
scores = []
employee_num = len(employees)
while employee_num:
    employee_num -= 1
    scores.append(employees[employee_num]['score'])
scores.sort(reverse = True)
score_temp = 0
for score in scores:
    if score == score_temp:
        scores.remove(score)
    score_temp = score
print(scores)

# 把员工按评分顺序排列
employees_sorted = []
score_num = len(scores)
while score_num:
    score_num -= 1
    employee_num = len(employees)
    while employee_num:
        employee_num -= 1
        if employees[employee_num]['score'] == scores[score_num]:
            employees_sorted.append(employees[employee_num])

        
print("Name      Age       Sex          Position               score ")
employee_num = len(employees_sorted)
while employee_num:
    employee_num -= 1
    print(
        employees_sorted[employee_num]['name'] + "      " + 
        str(employees_sorted[employee_num]['age']) + "      " + 
        employees_sorted[employee_num]['sex'] + "      " + 
        employees_sorted[employee_num]['position'] + "                " + 
        str(employees_sorted[employee_num]['score']) + "   " 
        )

           
Python学习:字典