데이터 형식 - 사전 (DICT)
내용 :
그림 사전을 가져옵니다
약간의 지식 포인트는 그림 사전을 얻을
지식은 그림이 너무 일반적으로 설명하면 다음과 미세 문자를 참조하십시오
사전은 무엇입니까
JS 객체
목적 :이 사전에 올 때, 프런트 엔드 학생들로 이해할 수있다. 사전에 긴 파이썬과 JS의 객체가 같은 말을 할 수 없기 때문에, 단순히 동일합니다.
사전 이상의 일대일 자식 요소에 키 - 값 쌍들의 집합이다.
그냥 복잡한 데이터 유형으로, 같은 목록입니다.
상기 사전에 키 이름은 문자열 형식이어야하며, 키에 해당하는 값은 어떤 유형이 될 수 있습니다.
사전 긴 톱질
결국 사전 톱질했다가 있습니까? 발표 :
의사 코드 구문
列表变量名 = {
'字符串键名key1': 对应key1的值value1,
'字符串键名key2': 对应key2的值value2,
...(更多key、value对儿)
}
예를 들면 데모
데모 코드의 사전 정의는, 당신이 다음에주의를 지불 할 수있는, 다음의 경우 사용할 수 있습니다.
dictName = {
'name': '小石头',
'age': 19,
'hobby': {
'it': ['css','js','python'],
'daily': [['music','tv'],['apple','pear']],
'sports': 'sleep'
},
'married': True
}
구문 영상
의사 코드 우리는 다음과 같은 결론을 내릴 수있는 데모 코드에 의해 사전에 특성 포인트를 :
-
사용자 정의 변수 이름
-
가변 등호 할당 사전 (dictName)
-
아이가 중괄호 한 쌍에 싸여와 등호의 오른쪽은 사전입니다
-
내부 사전 키 - 값 쌍의 쌍 (키 :
key
실측치 :value
). -
键名 이쑤시개 符串
-
즉 키 이름은 그렇지 않으면 오류가 발생하지 따옴표로 포장해야한다 -
오류 유형 : NameError
변수 정의되지 않은 오류
-
-
키 이름은 반복의 유일한 필요 없습니다
-
위, dictName, 유일한 "연령" -
마지막 키를 떠나 같은 이름을 가진 여러 개의 키가있는 경우
keyNameOnly = { 'age': 29, 'age': 19, 'name': '小石头' } print(keyNameOnly) # {'age': 19, 'name': '小石头'} age对应29的键值对被覆盖了
-
-
값은 모든 유형의 값이 될 수 있습니다
-
콘텐츠의 목표 값은 반복 될 수있다
valueNameRepeat = { 'name': '小石头', 'like': '小石头', 'realTalk': True } print(valueNameRepeat) # {'name': '小石头', 'like': '小石头', 'realTalk': True} 值‘小石头’重复也无所谓。
-
키 식별자 및 상기 값의 대장 관련
-
키 (키)를 결합 값 (값)은, 한 쌍의 키가 형성 자식이라고
-
키 사이의 어린이의 각 쌍은 쉼표로 구분에
-
사전은 키 - 값 쌍의 아이들의 수에는 제한이 없습니다
-
어린이의 마지막 키 - 값 쌍은 쉼표가 필요하지 않습니다
어떻게 사전을 사용하는 방법
사전 기능의 길이를 가져 --len
我们可以用len()
函数来得出一个列表或者字典的长度(元素个数)
括号里放列表或字典名称
print(len(dictName)) #4,因为又4对儿,键名分别是name、age、hobby和married
列表的长度也是用len()函数获取
提取字典中的元素
通过字典的索引(键名)来获取对应的值
伪代码:
字典名[字典的键]
字典没有偏移量,所以中括号写的是键名
demo:
dictName['name'] # 小石头
嵌套提取
拓展 - 二维嵌套列表值的提取方法
同样是用偏移量来获取。
listdemo = [['music','tv'],['apple','pear']]
print(listdemo[1][1]) # pear
先用第一个偏移量获取最外边列表的第1个元素。得到列表['apple','pear']
后,再继续追加一个偏移量[1]获取得到的列表['apple','pear']
中第一个元素,打印出'pear'
拓展 - 多维嵌套字典中值的提取方法
因为是用键名,而不是偏移量的方法获取。所以感觉在理解逻辑上,比列表容易让初学者接受。
print(dictName['hobby']['sports']) # sleep
先用键名"hobby"获取其对应的值,再用“hobby”里的"sports"获取其sports自己对应的值。得到"sleep"
拓展 - 列表与字典互相嵌套时值的提取方法
举一反三,概念加强版
print(dictName['hobby']['daily'][0][0]) # music
往字典中增加元素
新增键值对要用到赋值语句 伪代码:
字典名[键] = 值
自我感觉很好理解。只需要在提取的基础上赋值即可。
⚠️但可能需要注意,如果键名是字典中已经存在的,再这么操作就会直接修改这个键的值。
示例代码:
dictName['homeland'] = 'china'
print(dictName)
删除字典中的元素
删除字典里键值对的代码是del语句
伪代码:
del 字典名[键]
示例代码:
del(dictName['married'])
print(dictName)
对比列表的异同
相同点
1、修改值时都是通过赋值:在列表和字典中,如果要修改元素,都可用赋值语句来完成
2、值类型支持任意嵌套:除基本数据类型外,列表可嵌套其他列表和字典,字典也可嵌套其他字典和列表。
不同点
1、比较相等时规则不同
列表中的元素是有自己明确的“位置”的,所以即使看似相同的元素,只要在列表所处的位置不同,它们就是两个不同的列表
而字典中的数据是随机排列的,所以相比时即使键调动顺序也不影响
代码观察:
students1 = ['小明','小红','小刚']
students2 = ['小明','小红','小刚']
print(students1 == students2)
# True 必须元素顺序、个数、内容皆一致则相同
students3 = ['小明','小红','小刚']
students4 = ['小明','小刚','小红']
print(students3 == students4)
# False 改变了一下顺序就不相等了
scores1 = {'小明':95,'小红':90,'小刚':100}
scores2 = {'小刚':100,'小明':95,'小红':90}
print(scores1 == scores2)
# True 只要两个字典中,键名及其分别对应的值都一一相等,则整个字典相等。
scores3 = {'小明':95,'小红':90,'小刚':100}
scores4 = {'小明':9,'小红':90,'小刚':100}
print(scores3 == scores4)
# False 这样,即使键名一一对应,键名所对应的值不同,最终结果不相等。
2、读取数据的方法不同
列表有序,要用偏移量定位
字典无序,可通过唯一的键来取值
观察代码:
# 提取列表中的数据 - 用偏移量/索引/下标
listdemo = ['apple','pear']
print(listdemo[1]) # pear
# 提取字典中的数据 - 用键名
keyNameOnly = {
'age': 29,
'age': 19,
'name': '小石头'
}
print(keyNameOnly['age']) # 19
练习题
you = {
'name': '',
'a': [{
'b': {
'c': '强撑',
'love': 'anybody'
}
}],
'age': 30
}
4、在b里边增加爱好,为一个数组,数组内容自定
3、删除“age”
2、修改“name”的值
1、提取出“love”的值