入場から刑務所まで-タプルと辞書

はじめにN日

タプル

タプルデータタイプはコンテナであり、()はマーカーコンテナとして、複数の間隔を空けた要素内
不変(追加、削除、変更なし)
です:(要素1、要素2、要素3はコンマで...)
要素はできますあらゆるタイプのデータであり、繰り返すことができます

t1 = (10, 11, 12, '123', 'abc')
print(type(t1), t1)

要素が1つしかないタプル(element、)
タプルに要素が1つしかない場合は、要素の後にコンマを続ける必要があります。

t2 = (1)
t3 = (1,)
print(t2, type(t2))  # 1 <class 'int'> 不是元组类型
print(t3, type(t3))  # (1,) <class 'tuple'> 元组类型

空のタプル

t4 = ()
print(t4, type(t4))  # () <class 'tuple'>

括弧を省略します。
あいまいさがない場合は、タプルの()を省略し、複数の要素をコンマで直接区切り、タプルを示すことができます。

t5 = 1, 3, 5, 1, 5
print(t5, type(t5))  # (1, 3, 5, 1, 5) <class 'tuple'>

# 获取元素:列表获取元素的方法元组都支持
#例如遍历和切片:
```python
t6 = (1, 3, 5, 4)
for i in t6:
    print(i)
print(t6[-1], t6[2])
print(t6[:])

変数の数をタプル内の要素の数と一致させて、タプル内のすべての要素の値を取得します。
変数1、変数2、変数3 ... =タプル

t7 = (1, 2, 3, 4, 5, 6)
a, b, c, d, e, f = t7
print(a, b, c, d, e, f)  # 1 2 3 4 5 6

'''
a, b, c, d=t7
print(a, b, c, d)   #ValueError: too many values to unpack (expected 4)
a, b, c, d, e, f,g = t7
print(a, b, c, d, e, f,g)   # ValueError: not enough values
                               to unpack (expected 7, got 6)

複数の変数を使用してタプル要素を同時に取得する場合、変数の数はタプル内の要素の数より少なくすることができますが、
*の前に1つの変数のみが存在する必要があります。

nums = (1, 3, 5, 7, 6, 5)
a, b, c, *d = nums
print(a, b, c, *d)  # 1 3 5 7 6 5
print(*d)  # 7 6 5

*a, b, c = nums
print(*a)  # 1 3 5 7
print(b)  # 6
print(c)  # 5

a, *b, c = nums
print(a)  # 1
print(*b)  # 3 5 7 6
print(c)  # 5

'''
# 多个变量前面有*会报错
*a,*b,c,d=nums
print(*a,*b,c,d) # TypeError: print() argument after * must 
                    be an iterable, not int

タプルをソートした後、新しいリストが生成されます

nums2 = (1, 3, 5, 7, 1, 3, 5)
new_nums2 = sorted(nums2)
print(new_nums2)  # [1, 1, 3, 3, 5, 5, 7]

list1=[1, 1, 3, 3, 5, 5, 7]
print(tuple(list1)) # (1, 1, 3, 3, 5, 5, 7)
print(tuple('abc'))  # ('a', 'b', 'c')
print(tuple(range(1, 5)))  # (1, 2, 3, 4)

ディクショナリ
'' '
機能:ディクショナリを使用して、異なる意味を持つ複数のデータを格納します。
ディクショナリはコンテナデータタイプです。{}はコンテナのシンボルとして使用され、複数の要素はコンマで区切られます(要素はキーと値のペアである必要があります)
{キー1:値1、キー2:値2、...}
機能:変数、追加、削除、変更、検索のサポート(添え字操作はサポートされていません)、
辞書は無秩序です
要素:キーと値のペアである
必要がありますキー:不変である必要がありますデータ(数字、文字列、タプル)は通常文字列
を使用しキーは区別と説明に使用され
ます。唯一の値:要件なし

stu = {
    
    "姓名": "小明", '成绩': 15, '性别': '男', '年龄': 15}
print(stu['成绩'])  # 15
print(stu)

空の辞書

d1 = {
    
    }
print(type(d1))  # <class 'dict'>

キーは不変です

d1 = {
    
    10: 10, 'x': 11, (1, 2): 15}
print(d1)
 d1 = {
    
    10: 10, 'x': 11, [1, 2]: 15}   TypeError: unhashable type: 'list'

キーはユニークです

d1 = {
    
    10: 10, 'x': 11, (1, 2): 15, 10: 1}
print(d1)  # 出现多个相同的键,打印结果只会显示其中一个 {10: 1, 'x': 11, (1, 2): 15}

それが正しいかどうかを判断する

print({
    
    10: 10, 'x': 11} == {
    
    'x': 11, 10: 10})  # 字典 True 无序的
print([10, 'x', 11] == ['x', 11, 10])  # 列表为False有序的

Dictionary CRUD
'' '
チェック:
辞書の単一の値を取得する[key]不在
辞書の場合、取得した指定されたキー値に対応する値を取得します。get(key)取得した場合、指定したキー値に対応する値を取得します。戻り値なし
dictionary.get(key、value)指定されたキーに対応する値を取得します。取得した値が存在しない場合は、値を返します。

dog = {
    
    'name': '旺财', 'age': '2', 'sex': '母狗', 'breed': '土狗'}

print(dog['age'], dog['name'])  # 2 旺财
print(dog.get('age'))  # 2
print(dog.get('weight'))  # None
print(dog.get('weight', 'gong'))  # gong

キーと値のペアを繰り返すと、辞書が無効になります


dog = {
    
    'name': '旺财', 'age': '2', 'sex': '母', 'breed': '土狗'}
for i in dog:
    print(i)  # 'name' 'age' 'sex' 'breed'
    print(dog[i])  # 旺财 2 母 土狗

追加および変更
``
キーが存在する場合、指定されたキーに対応する値を変更する値を辞書[キー] =:キーが存在しない場合には、キーと値のペアを追加することです
『』 '

dog = {
    
    'name': '旺财', 'age': '2', 'sex': '母', 'breed': '土狗'}
dog['name'] = '小黑'  # 修改‘name’的值
dog['weight'] = '12'  # 增加‘weight’:‘12’
print(dog)  # {'name': '小黑', 'age': '2', 'sex': '母',
#                'breed': '土狗', 'weight': '12'}

削除

'' '
del dictionary [key]指定されたキーに対応するキーと値のペアを削除します
dictionary.pop(key)指定されたキーに対応する値を削除します
' ''

dog = {
    
    'name': '旺财', 'age': '2', 'sex': '母', 'breed': '土狗'}
del dog['breed']
del_name = dog.pop('name')
print(dog)  # {'age': '2', 'sex': '母'}
print(del_name)  # 旺财

クラスの情報を保存する変数を定義します。クラス情報には主に、クラスの教師、講師、クラス名、
場所、定員、すべての学生が含まれます。

class_python = {
    
    
    'class_name': "python_2004", '位置': "肖家河", "容量": '42',
    '班主任': {
    
    "姓名": '张老师', '性别': '女', 'age': '18', '电话': '123456',
            'qq': '123456'},
    '讲师': {
    
    "姓名": '余老师', '性别': '女', 'age': '18', '电话': '123456',
           'qq': '123456', '级别': 'x'},
    '学生':
        {
    
    '学生1': {
    
    '性别': '男', '年龄': 24, "学历": '大专', "专业": '计算机',
                 '电话': '123456'},
         '学生2': {
    
    '性别': '男', '年龄': 23, "学历": '大专', "专业": '计算机',
                 '电话': '123456'},
         '学生3': {
    
    '性别': '男', '年龄': 24, "学历": '大专', "专业": '计算机',
                 '电话': '123456'},
         '学生4': {
    
    '性别': '男', '年龄': 21, "学历": '大专', "专业": '计算机',
                 '电话': '123456'},
         '学生5': {
    
    '性别': '男', '年龄': 20, "学历": '大专', "专业": '计算机',
                 '电话': '123456'}}
}
print(class_python)

# 获取班主任的名字
t_name = class_python['班主任']["姓名"]
print(t_name)

辞書は加算と乗算演算をサポートしていません。また、大きさの比較サポートしています
「」「
指定したキーが存在するかどうかを確認ではないでをし、
辞書内の辞書のキーに指定されたキーが辞書に存在するか否かを判断します
『』」

d1 = {
    
    'a': 10, 'b': 12, 'c': 30}
print(10 in d1)  # False
print('a' in d1)  # True

# 相关函数:len

print(len(d1))  # 获取长度 3

辞書タイプの変換

dict(data):指定されたデータを辞書に変換します。
要件:
データ自体はシーケンスであり、シーケンスの要素は長さ2
小さなシーケンスである必要があります。小さなシーケンスの最初の要素は不変のデータです。

list(dictionary)は、指定された辞書をリストに変換します(リストの要素として辞書のキーを使用します)

list1 = [(1, 2), [3, 4], 'ab']
print(dict(list1))  # {1: 2, 3: 4, 'a': 'b'}

dict1 = {
    
    1: 1, 2: 3, 4: 5}
print(list(dict1))  # [1, 2, 4]

関連メソッド
'' '
Dictionary.clear()
' ''

d1 = {
    
    'a': 10, 'b': 20, 'c': 30}
d1.clear()
print(d1)  # {} 清空

空の辞書を割り当てることは非常に非効率的であり、お勧めできません

d2 = {
    
    'a': 10, 'b': 20, 'c': 30}
d2 = {
    
    }
print(d2)  # {}

Dictionary.copy()辞書をコピーして、まったく同じ新しい辞書を生成し、

d1 = {
    
    'a': 10, 'b': 20, 'c': 30}
d2 = d1
print(d2)  # {'a': 10, 'b': 20, 'c': 30},将d1赋值给d2,如果修改d2,会影响d1
print(id(d1), id(d2))  # 4728616 4728616 地址相同

d3 = d1.copy()
print(d3)  # {'a': 10, 'b': 20, 'c': 30} 复制一个d3,修改d3不会影响d1
print(id(d1), id(d3))  # 5777192 5778232 地址不同

dict.fromkeys(sequence)は新しい辞書を作成し、キーはシーケンスの各要素であり、値はNoneです。

print(dict.fromkeys('addada'))  # {'a': None, 'd': None}

重複する要素を削除する

nums = [1, 1, 1, 2, 3, 5, 5, 5, 3]

nums2 =list(dict.fromkeys(nums))
print(nums2)          # [1, 2, 3,  5 ]
print(dict.fromkeys('ab', 1))  # {'a': 1, 'b': 1}
print(dict.fromkeys('ab', [1, 2, 2]))  # {'a': [1, 2, 2], 'b': [1, 2, 2]

Dictionary.keys()辞書のすべてのキーを取得します(戻り値はシーケンスですが、リストではありません)
Dictionary.values()辞書のすべての値を取得します(戻り値はシーケンスですが、リストではありません)

d1={
    
    'a': 1, 'b': 1}
print(d1.keys())   # dict_keys(['a', 'b'])
print(d1.values()) # dict_values([1, 1])
print(d1.items()) # dict_items([('a', 1), ('b', 1)])

Dictionary.setdefault(key、value)キーと値のペアを辞書に追加します(追加のみで変更は不可)

d1={
    
    'a': 1, 'b': 1}
d1.setdefault('c',1)
print(d1)  # {'a': 1, 'b': 1, 'c': 1}

d1.setdefault('c',3)
print(d1)  # {'a': 1, 'b': 1, 'c': 1}

Dictionary 1.update(Dictionary 2)辞書2のすべてのキーと値のペアを辞書1に追加します。
辞書2は必ずしも辞書である必要はありませんが、辞書に変換できるシーケンスにすることもできます。

d1={
    
    'a': 1, 'b': 1}
d2={
    
    'c': 1, 'd': 1}
d1.update(d2)
print(d1)   # {'a': 1, 'b': 1, 'c': 1, 'd': 1}

おすすめ

転載: blog.csdn.net/weixin_44628421/article/details/108856341