天天看點

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學習:字典