zoukankan      html  css  js  c++  java
  • Python数据类型(字典和集合)

    1.5 Dictionary(字典)

    Python中,字典用放在花括号{}中一系列键-值对表示。键和值之间用冒号分隔,键-值对之间用逗号分隔。
    在字典中,你想存储多少个键-值对都可以。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。

    >>> alien_0 = {'color': 'green', 'point': 5}
    >>> print(alien_0)
    {'color': 'green', 'point': 5}
    >>> alien_0['x_position'] = 0
    >>> alien_0['y_position'] = 25
    >>> print(alien_0)
    {'color': 'green', 'point': 5, 'x_position': 0, 'y_position': 25}
    

    注意,键-值对的排列顺序与添加顺序不同。
    Python不关心键-值对的添加顺序,而只关心键和值之间的关联关系。

    >>> alien_0 = {} # 创建空字典
    >>> alien_0['color'] = 'green'
    >>> alien_0['point'] = 5
    >>> print(alien_0)
    {'color': 'green', 'point': 5}
    

    1.5.1 访问字典中的值

    >>> alien_0 = {'color': 'green'}
    >>> print(alien_0['color'])
    green
    

    1.5.2 修改字典中的值

    >>> alien_0 = {'color': 'green'}
    >>> alien_0['color']
    'green'
    >>> alien_0['color'] = 'yellow'
    >>> alien_0['color']
    'yellow'
    

    1.5.3 删除键-值对

    >>> alien_0 = {'color': 'green', 'points': 5}
    >>> print(alien_0)
    {'color': 'green', 'points': 5}
    >>> del alien_0['points']
    >>> print(alien_0)
    {'color': 'green'}
    

    1.5.4 遍历字典

    user_0 = {
        'username': 'efermi',
        'first': 'enrico',
        'last': 'fermi',
    }
    
    for key, value in user_0.items():
        print("
    Key: " + key)
        print("Value: " + value)
    
    # 
    # Key: username
    # Value: efermi
    # 
    # Key: first
    # Value: enrico
    # 
    # Key: last
    # Value: fermi
    # 
    
    # 遍历字典中的所有键
    favorite_languages = {
        'jen': 'python',
        'sarah': 'c',
        'edward': 'ruby',
        'phil': 'python',
    }
    
    for name in favorite_languages.keys():
        print(name.title())
    
    # Jen
    # Sarah
    # Edward
    # Phil
    
    # 遍历字典中的所有值
    favorite_languages = {
        'jen': 'python',
        'sarah': 'c',
        'edward': 'ruby',
        'phil': 'python',
    }
    
    for language in favorite_languages.values():
        print(language.title())
    
    # Python
    # C
    # Ruby
    # Python
    
    favorite_languages = {
        'jen': 'python',
        'sarah': 'c',
        'edward': 'ruby',
        'phil': 'python',
    }
    # 通过方法set()来剔除重复项
    for language in set(favorite_languages.values()):
        print(language.title())
    
    # C
    # Ruby
    # Python
    
    favorite_languages = {
        'jen': 'python',
        'sarah': 'c',
        'edward': 'ruby',
        'phil': 'python',
    }
    
    # 使用in或者not in来判断key是否存在
    if 'erin' not in favorite_languages.keys():
        print("Erin, please take our poll!")
    
    # Erin, please take our poll!
    
    # 按顺序遍历字典中的所有键
    favorite_languages = {
        'jen': 'python',
        'sarah': 'c',
        'edward': 'ruby',
        'phil': 'python',
    }
    
    for name in sorted(favorite_languages.keys()):
        print(name.title())
    
    # Edward
    # Jen
    # Phil
    # Sarah
    

    1.5.5 嵌套

    你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。

    # 在列表中嵌套字典
    alien_0 = {'color': 'green', 'points': 5}
    alien_1 = {'color': 'yellow', 'points': 10}
    alien_2 = {'color': 'red', 'points': 15}
    
    aliens = [alien_0, alien_1, alien_2]
    
    for alien in aliens:
        print(alien)
    
    # {'color': 'green', 'points': 5}
    # {'color': 'yellow', 'points': 10}
    # {'color': 'red', 'points': 15}
    
    # 在字典中嵌套列表
    pizza = {
        'crust': 'thick',
        'toppings': ['mushrooms', 'extra cheese'],
    }
    
    print("You ordered a " + pizza['crust'] + "-crust pizza " +
          "with the following toppings:")
    
    for topping in pizza['toppings']:
        print("	" + topping)
    
    # You ordered a thick-crust pizza with the following toppings:
    # 	mushrooms
    # 	extra cheese
    
    # 在字典中嵌套字典
    users = {
        'aeinstein': {
            'first': 'albert',
            'last': 'einstein',
            'location': 'princeton',
        },
        'mcurie': {
            'first': 'marie',
            'last': 'curie',
            'location': 'paris',
        },
    }
    
    for username, user_info in users.items():
        print("
    Username: " + username)
        full_name = user_info['first'] + " " + user_info['last']
        location = user_info['location']
    
        print("	Full name: " + full_name.title())
        print("	Location: " + location.title())
    
    # Username: aeinstein
    #     Full name: Albert Einstein
    #     Location: Princeton
    #
    # Username: mcurie
    #     Full name: Marie Curie
    #     Location: Paris
    

    1.6 Set(集合)

    集合是一个无序的不重复元素序列。
    可以使用大括号{}或者set()函数创建集合。
    注意:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典。

    >>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
    >>> print(basket)
    {'orange', 'apple', 'pear', 'banana'}
    >>> 'orange' in basket
    True
    >>> 'crabgrass' in basket
    False
    

    两个集合之间的运算

    >>> a = set('abracadabra')
    >>> b = set('alacazam')
    >>> a
    {'a', 'b', 'c', 'd', 'r'}
    >>> b
    {'l', 'z', 'm', 'a', 'c'}
    >>> a - b
    {'b', 'd', 'r'}
    >>> a | b
    {'l', 'z', 'a', 'm', 'b', 'c', 'd', 'r'}
    >>> a & b
    {'a', 'c'}
    >>> a ^ b
    {'b', 'l', 'z', 'd', 'm', 'r'}
    

    1.6.1 添加元素

    >>> thisset = set(("Google", "Runoob", "Taobao"))
    >>> print(thisset)
    {'Runoob', 'Google', 'Taobao'}
    >>> thisset.add("Facebook")
    >>> print(thisset)
    {'Runoob', 'Facebook', 'Google', 'Taobao'}
    

    使用update()方法也可以添加元素,而且参数可以是列表、元组、字典等。

    >>> thisset = set(("Google", "Runoob", "Taobao"))
    >>> thisset.update({1,3})
    >>> print(thisset)
    {'Runoob', 1, 3, 'Taobao', 'Google'}
    >>> thisset.update([1,4],[5,6])
    >>> print(thisset)
    {'Runoob', 1, 3, 4, 'Taobao', 'Google', 5, 6}
    

    1.6.2 移除元素

    >>> thisset = set(("Google", "Runoob", "Taobao"))
    >>> thisset.remove("Taobao")
    >>> print(thisset)
    {'Google', 'Runoob'}
    
    >>> thisset = set(("Google", "Runoob", "Taobao"))
    >>> thisset.discard("Facebook")  # 不存在不会发生错误
    >>> print(thisset)
    {'Runoob', 'Google', 'Taobao'}
    
    >>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
    >>> x = thisset.pop() # 随机删除集合中的一个元素
    >>> print(x)
    Google
    

    1.6.3 清空集合

    >>> thisset = set(("Google", "Runoob", "Taobao"))
    >>> thisset.clear()
    >>> print(thisset)
    set()
    

    1.6.4 计算集合元素个数

    >>> thisset = set(("Google", "Runoob", "Taobao"))
    >>> len(thisset)
    3
    

    参考资料:

  • 相关阅读:
    java一个简单的线程池小例子
    java通过反射复制实体类
    java通过反射获取Object的属性
    java时间对比
    软件工程基础最后第一次作业 总结
    C++语言程序化设计——第五次作业
    软件工程基础——第四次作业
    C++语言程序化设计——第四次作业
    软件工程基础第三次作业——原型设计
    C++语言程序化设计——第三次作业
  • 原文地址:https://www.cnblogs.com/gzhjj/p/10658951.html
Copyright © 2011-2022 走看看