Python中的字典

Python中的字典

1. 简介

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2, key3 : value3 }

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

1.1. 字典排序

1.2. 字典排序

# coding:utf-8
from random import randint


def key_sort(dict):
    print("按键(key)排序:")
    # sorted(key_value) 返回重新排序的列表
    # 字典按键排序
    for i in sorted(dict):
        print((i, dict[i]), end=" ")
    print("\r")


def value_sort(dict):
    print("按键(value)排序:")
    # sorted(key_value) 返回重新排序的列表
    # 字典按键排序
    for i in sorted(dict.items(), key=lambda kv: (kv[1])):
        print(i)
    print("\r")


def main():
    d = {x: randint(60, 100) for x in "xyzabc"}
    key_sort(d)
    value_sort(d)

# 主函数
if __name__ == "__main__":
    main()

1.3. 字典列表排序

# coding:utf-8

def main():
    lis = [
        {"name": "Taobao", "age": 100},
        {"name": "Runoob", "age": 7},
        {"name": "Google", "age": 100},
        {"name": "Wiki", "age": 200},
    ]
    print("\r")

    # 通过 age 升序排序
    print("列表通过 age 升序排序: ")
    print(sorted(lis, key=lambda i: i["age"]))

    print("\r")

    # 先按 age 排序,再按 name 排序
    print("列表通过 age 和 name 排序: ")
    print(sorted(lis, key=lambda i: (i["age"], i["name"])))

    print("\r")

    # 按 age 降序排序
    print("列表通过 age 降序排序: ")
    print(sorted(lis, key=lambda i: i["age"], reverse=True))


# 主函数
if __name__ == "__main__":
    main()

2. 计算字典值之和

# coding:utf-8
from random import randint

def returnSum(Dict):
    sum = 0
    for i in Dict:
        sum = sum + Dict[i]

    return sum


def main():
    d = {x: randint(60, 100) for x in "xyzabc"}
    print(returnSum(d))


# 主函数
if __name__ == "__main__":
    main()

3. 移除字典点键值

# coding:utf-8
from random import randint


def main():
    test_dict = {x: randint(0, 50) for x in "abcdefg"}
    # 输出原始的字典
    print ("字典移除前 : " + str(test_dict))

    # 使用 del 移除 Zhihu
    del test_dict['a']

    # 使用 pop 移除 Zhihu
    removed_value = test_dict.pop('b')
    print("removed_value : " + str(removed_value))

    # 使用 pop 移除 Zhihu
    new_dict = {key:val for key, val in test_dict.items() if key != 'c'}

    # 输出移除后的字典
    print ("字典移除后 : " + str(test_dict))
    print ("字典移除后 : " + str(new_dict))


# 主函数
if __name__ == "__main__":
    main()

4. 合并字典

# coding:utf-8
from random import randint

def Merge1(dict1, dict2):
    return(dict2.update(dict1))

def Merge2(dict1, dict2):
    res = {**dict1, **dict2}
    return res

def main():
    d1 = {x: randint(0, 50) for x in "abc"}
    d2 = {x: randint(50, 100) for x in "xyz"}

    Merge1(d1, d2)
    print(d2)

    dict2 = Merge2(d1, d2)
    print(dict2)

# 主函数
if __name__ == "__main__":
    main()

5. 使用字典格式化字符串

# coding:utf-8
from random import randint


def main():
    # 字符串模板中使用key
    temp = '教程是:%(name)s, 价格是:%(price)010.2f, 出版社是:%(publish)s'
    book = {'name':'Python基础教程', 'price': 99, 'publish': 'C语言中文网'}
    # 使用字典为字符串模板中的key传入值
    print(temp % book)
    book = {'name':'C语言小白变怪兽', 'price':159, 'publish': 'C语言中文网'}
    # 使用字典为字符串模板中的key传入值
    print(temp % book)


# 主函数
if __name__ == "__main__":
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

002237

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值