หน้าแรก
หน้าแรก
Python และ javascript มีการนำเสนอที่แตกต่างกันสำหรับพจนานุกรม ดังนั้นคุณจึงต้องมีการเป็นตัวแทนระดับกลางเพื่อส่งข้อมูลระหว่างกัน การแสดงข้อมูลระดับกลางที่ใช้บ่อยที่สุดคือ JSON ซึ่งเป็นรูปแบบการแลกเปลี่ยนข้อมูลและข้อมูลที่มีน้ำหนักเบาอย่างง่าย ฟังก์ชันดัมพ์จะแปลง dict เป็นสตริง ตัวอย่าง import json m
ใช่ พจนานุกรม Python สามารถเปลี่ยนแปลงได้ การเปลี่ยนการอ้างอิงไปยังคีย์ไม่ได้นำไปสู่การสร้างพจนานุกรมใหม่ ค่อนข้างจะปรับปรุงพจนานุกรมปัจจุบันในสถานที่ ตัวอย่าง a = {'foo': 1, 'bar': 12} b = a b['foo'] = 20 print(a) print(b) ผลลัพธ์ สิ่งนี้จะให้ผลลัพธ์ - {'foo': 20,
dicts ใน python ได้รับการปรับให้เหมาะสมอย่างมาก การสร้าง dict จากคีย์ N หรือคู่คีย์/ค่าคือ O(N) การดึงข้อมูลคือ O(1) การพุตจะถูกตัดจำหน่าย O(1) และอื่นๆ คุณไม่จำเป็นต้องปรับให้เหมาะสมอย่างชัดเจน คุณสามารถมั่นใจได้ในสิ่งนี้ เนื่องจาก python under the hood ใช้คลาสของตัวเองโดยใช้ dicts อย่าเปรียบเทียบ
หากคุณมี dict ที่มีการแมป string-integer คุณสามารถใช้วิธี max ในคู่ไอเท็มของพจนานุกรมเพื่อให้ได้ค่าที่มากที่สุด ตัวอย่าง d = { 'foo': 100, 'bar': 25, 'baz': 360 } print(max(k for k, v in d.items())) ผลลัพธ์ สิ่งนี้จะให้ผลลัพธ์ - foo f
คุณเข้าถึงค่าพจนานุกรมของตัวแปรใน Python ได้โดยใช้โอเปอเรเตอร์การเข้าถึง [] ตัวอย่าง my_dict = { 'foo': 42,'bar': 12.5 } new_var = my_dict['foo'] print(new_var) ผลลัพธ์ สิ่งนี้จะให้ผลลัพธ์ - 42 คุณยังสามารถเข้าถึงค่าโดยใช้เมธอด get ในพจนานุกรมได้อีกด้วย ตัวอย่
ใน Python 3.5+ คุณสามารถใช้โอเปอเรเตอร์ ** เพื่อแกะพจนานุกรมและรวมพจนานุกรมหลาย ๆ พจนานุกรมโดยใช้ไวยากรณ์ต่อไปนี้: a = {'foo': 125} b = {'bar': "hello"} c = {**a, **b} print(c) สิ่งนี้จะให้ผลลัพธ์: {'foo': 125, 'bar': 'hello'} ไม่รองรับในเวอร์ชันเก
คุณสามารถใช้ฟังก์ชัน del เพื่อลบคีย์เฉพาะหรือวนซ้ำผ่านคีย์ทั้งหมดแล้วลบออก ตัวอย่างเช่น my_dict = {'name': 'foo', 'age': 28} keys = list(my_dict.keys()) for key in keys: del my_dict[key] print(my_dict) สิ่งนี้จะให้ผลลัพธ์: {} คุณยังสามารถใช้ฟังก์ชันป๊อปเพื่อลบค
คุณสามารถใส่ความคิดเห็นเหมือนปกติที่ใดก็ได้ในสคริปต์หลาม แต่โปรดทราบว่าคุณสามารถใส่ความคิดเห็นบรรทัดเดียวโดยใช้ # ความคิดเห็นแบบหลายบรรทัดทำหน้าที่เหมือนสตริง และคุณไม่สามารถใส่แค่สตริงระหว่างคำจำกัดความของ dict ตัวอย่างเช่น การประกาศต่อไปนี้ถูกต้องสมบูรณ์: testItems = { 'TestOne
คุณสามารถใส่ความคิดเห็นเหมือนปกติที่ใดก็ได้ในสคริปต์หลาม แต่โปรดทราบว่าคุณสามารถใส่ความคิดเห็นบรรทัดเดียวโดยใช้ # ความคิดเห็นแบบหลายบรรทัดทำหน้าที่เหมือนสตริง และคุณไม่สามารถใส่แค่สตริงระหว่างคำจำกัดความของ dict ตัวอย่างเช่น การประกาศต่อไปนี้ถูกต้องสมบูรณ์ − ตัวอย่าง testItems = { '
วิธีที่ง่ายและอ่านง่ายที่สุดในการเข้าถึงคุณสมบัติที่ซ้อนกันใน Python dict คือการใช้วนซ้ำและวนซ้ำแต่ละรายการในขณะที่รับค่าถัดไป จนกว่าจะสิ้นสุด ตัวอย่าง def getFromDict(dataDict, mapList): for k in mapList: dataDict = dataDict[k] return dataDict a = { 'foo': 45,'bar': {
คุณสามารถสร้างพจนานุกรมแบบซ้อนได้โดยใช้ไวยากรณ์ที่ซ้อนกัน เช่นเดียวกับที่คุณจะกำหนดวัตถุ JSON ตัวอย่าง a = { 'foo': 45, 'bar': { 'baz': 100, 'tru': "Hello" } } คุณสามารถเข้าถึงอ็
คุณสามารถทำได้โดยวนซ้ำในพจนานุกรมและกรองค่าศูนย์ออกก่อน จากนั้นนำผลรวมของค่าที่กรองออกมา สุดท้าย หารด้วยจำนวนค่าที่กรองเหล่านี้ ตัวอย่าง my_dict = {"foo": 100, "bar": 0, "baz": 200} filtered_vals = [v for _, v in my_dict.items() if v != 0] average = sum(filtered_vals)
ตัวดำเนินการ +=คือ syntax sugar สำหรับฟังก์ชัน object.__iad__() จากเอกสารหลาม: เมธอดเหล่านี้ถูกเรียกเพื่อใช้การมอบหมายเลขคณิตเสริม (+=, -=, *=, @=, /=, //=, %=, **=, =, &=, ^=, |=). วิธีการเหล่านี้ควรพยายามดำเนินการแทน (แก้ไขตนเอง) และส่งคืนผลลัพธ์ (ซึ่งอาจเป็นได้ แต่ไม่จำเป็นต้องเป็นด้วยตนเอง) ตัว
ตัวดำเนินการ +=คือ syntax sugar สำหรับฟังก์ชัน object.__iand__() จากเอกสารหลาม: เมธอดเหล่านี้ถูกเรียกเพื่อใช้การมอบหมายเลขคณิตเสริม (+=, -=, *=, @=, /=, //=, %=, **=, =, &=, ^=, |=). วิธีการเหล่านี้ควรพยายามดำเนินการแทน (แก้ไขตนเอง) และส่งคืนผลลัพธ์ (ซึ่งอาจเป็นได้ แต่ไม่จำเป็นต้องเป็นด้วยตนเอง) ตั
อาร์กิวเมนต์ *args เรียกว่า ตัวแปรตำแหน่งพารามิเตอร์ และ **kwargs คือ ตัวแปรคีย์เวิร์ดพารามิเตอร์ อาร์กิวเมนต์ * และ ** เพียงแกะโครงสร้างข้อมูลที่เกี่ยวข้อง ตัวอย่าง def func(a, b, c): return a + b + c args = (1, 2, 3) print(func(*args)) ผลลัพธ์ สิ่งนี้จะให้ผลลัพธ์ - 6
Python และภาษากระแสหลักส่วนใหญ่ไม่อนุญาตให้เปลี่ยนรูปลักษณ์ของโอเปอเรเตอร์ หากคุณกำลังพยายามแทนที่บางอย่างเช่น a ==b ด้วย a เท่ากับ b คุณจะไม่สามารถทำเช่นนั้นได้ ใน Python ข้อ จำกัด ค่อนข้างตั้งใจ — นิพจน์เช่น a เท่ากับ b จะดูผิดไวยากรณ์สำหรับผู้อ่านทุกคนที่คุ้นเคยกับ Python
วิธีการช่วยเหลือในล่ามมีประโยชน์มากสำหรับการดำเนินการดังกล่าว มีชุดอินพุตพิเศษมากมายที่คุณสามารถมอบให้เพื่อรับข้อมูลเกี่ยวกับแง่มุมต่างๆ ของภาษา ลืมรายการตัวดำเนินการ นี่คือคำสั่งบางส่วนที่คุณสามารถใช้ได้: ตัวดำเนินการทั้งหมด help(SPECIALMETHODS) ตัวดำเนินการพื้นฐาน help(BASICMETHODS) ตัวดำเนินการ
คุณสามารถทำโอเปอเรเตอร์ Python โอเวอร์โหลดได้ด้วยตัวถูกดำเนินการหลายตัว เช่นเดียวกับที่คุณทำกับตัวดำเนินการไบนารี ตัวอย่างเช่น หากคุณต้องการโอเวอร์โหลดตัวดำเนินการ + สำหรับคลาส ให้ทำดังต่อไปนี้ − ตัวอย่าง class Complex(object): def __init__(self, real, imag): self.r
ไม่สิ่งนี้ไม่สามารถทำได้ มันเป็นส่วนหนึ่งของภาษาไพทอนเอง นั่นเป็นวิธีที่ภาษาแยกวิเคราะห์นิพจน์และสร้างแผนภูมิแยกวิเคราะห์และไวยากรณ์ จากเอกสาร: เมื่อดำเนินการคำนวณทางคณิตศาสตร์ด้วยตัวดำเนินการแบบผสม สิ่งสำคัญที่ควรทราบคือ Python จะกำหนดการดำเนินการที่จะดำเนินการก่อน โดยยึดตามลำดับความสำคัญที่กำหนดไ
หากคุณต้องการได้ค่าผกผันของตัวเลข 16 บิตแรกเท่านั้น คุณสามารถใช้ xor ของตัวเลขนั้นด้วย 65535(16 1s ในเลขฐานสอง) ลืมการเสริม 2s เพียงเพิ่มหนึ่งในผลลัพธ์ ตัวอย่างเช่น ตัวอย่าง a = 3 # 11 in binary b = (a ^ 65535) + 1 print(bin(b)) ผลลัพธ์ สิ่งนี้จะให้ผลลัพธ์: 0b1111111111111101