คำถามติดแท็ก dictionary

5
ทำไมต้องเก็บฟังก์ชั่นภายในพจนานุกรมหลาม?
ฉันเป็นผู้เริ่มต้นงูใหญ่และฉันเพิ่งเรียนรู้เทคนิคที่เกี่ยวข้องกับพจนานุกรมและฟังก์ชั่น ไวยากรณ์เป็นเรื่องง่ายและดูเหมือนว่าเป็นเรื่องเล็กน้อย แต่ความรู้สึกของฉันหลามรู้สึกเสียวซ่า มีบางอย่างบอกฉันว่านี่เป็นแนวคิดที่ลึกและไพเราะมากและฉันก็ไม่เข้าใจถึงความสำคัญของมัน ใครสามารถใส่ชื่อให้กับเทคนิคนี้และอธิบายว่ามันมีประโยชน์หรือไม่? เทคนิคคือเมื่อคุณมีพจนานุกรมไพ ธ อนและฟังก์ชั่นที่คุณตั้งใจจะใช้ คุณแทรกองค์ประกอบพิเศษลงใน dict ที่มีค่าเป็นชื่อของฟังก์ชั่น เมื่อคุณพร้อมที่จะเรียกฟังก์ชั่นที่คุณออกโทรทางอ้อมโดยอ้างถึงองค์ประกอบ Dict ไม่ใช่ฟังก์ชั่นตามชื่อ ตัวอย่างที่ฉันใช้งานมาจาก Learn Python the Hard Way, 2nd Ed (นี่เป็นรุ่นที่มีให้เมื่อคุณสมัครใช้งานผ่านUdemy.comแต่น่าเสียดายที่เวอร์ชัน HTML ที่ใช้งานได้ฟรีปัจจุบันเป็น Ed 3 และไม่มีตัวอย่างนี้อีกต่อไป) ในการถอดความ: # make a dictionary of US states and major cities cities = {'San Diego':'CA', 'New York':'NY', 'Detroit':'MI'} # define a function …

4
ความแตกต่างระหว่างแฮชกับพจนานุกรมคืออะไร
ความแตกต่างระหว่างHashและDictionaryคืออะไร? มาจากพื้นหลังของสคริปต์ฉันรู้สึกว่ามันคล้ายกัน แต่ฉันต้องการค้นหาความแตกต่างที่แน่นอน Googling ไม่ได้ช่วยฉันเท่าไหร่

5
เมื่อใดจึงจะใช้พจนานุกรม vs tuple ใน Python
ตัวอย่างที่เฉพาะเจาะจงในใจคือรายการชื่อไฟล์และขนาดของไฟล์ ฉันไม่สามารถตัดสินใจได้ว่ารายการในรายการแต่ละคนควรอยู่ในรูปแบบหรือเพียงแค่{"filename": "blabla", "size": 123} ("blabla", 123)พจนานุกรมดูเหมือนว่าฉันจะมีเหตุผลมากกว่าเพราะการเข้าถึงขนาดfile["size"]นั้นมีคำอธิบายมากกว่าfile[1]... แต่ฉันไม่รู้จริงๆ คิด?

8
มีวิธีที่ดีกว่าในการใช้พจนานุกรม C # มากกว่า TryGetValue หรือไม่
ฉันพบว่าตัวเองมักจะค้นหาคำถามออนไลน์และวิธีแก้ปัญหาหลายอย่างรวมถึงพจนานุกรม อย่างไรก็ตามเมื่อใดก็ตามที่ฉันพยายามที่จะใช้พวกเขาฉันได้กลิ่นที่น่ากลัวนี้ในรหัสของฉัน เช่นทุกครั้งที่ฉันต้องการใช้ค่า: int x; if (dict.TryGetValue("key", out x)) { DoSomethingWith(x); } นั่นคือโค้ด 4 บรรทัดที่จะทำสิ่งต่อไปนี้: DoSomethingWith(dict["key"]) ฉันได้ยินมาว่าการใช้คีย์เวิร์ด out เป็นรูปแบบการต่อต้านเพราะทำให้ฟังก์ชั่นกลายพันธุ์พารามิเตอร์ของพวกเขา นอกจากนี้ฉันพบว่าตัวเองมักต้องการพจนานุกรม "กลับด้าน" ที่ฉันพลิกคีย์และค่าต่างๆ ในทำนองเดียวกันฉันมักจะทำซ้ำผ่านรายการในพจนานุกรมและพบว่าตนเองกำลังแปลงคีย์หรือค่าไปยังรายการ ฯลฯ เพื่อทำสิ่งนี้ให้ดีขึ้น ฉันรู้สึกว่ามีวิธีการใช้พจนานุกรมที่ดีกว่าและสง่างามกว่าอยู่เกือบตลอดเวลา แต่ฉันรู้สึกแย่

5
วิธีการที่มีประสิทธิภาพสำหรับการจัดเก็บวัตถุนับสิบล้านเพื่อการสืบค้นด้วยการแทรกจำนวนมากต่อวินาที?
นี่เป็นแอปพลิเคชั่นบันทึก / นับที่นับจำนวนแพ็กเก็ตและการนับประเภทของแพ็คเก็ต ฯลฯ ในเครือข่ายการแชท p2p ซึ่งเท่ากับประมาณ 4-6 ล้านแพ็กเก็ตในระยะเวลา 5 นาที และเนื่องจากฉันใช้เพียงแค่ "ภาพรวม" ของข้อมูลนี้ฉันจึงลบแพ็กเก็ตที่เก่ากว่า 5 นาทีทุกห้านาที ดังนั้นจำนวนสูงสุดของไอเท็มที่จะอยู่ในคอลเล็กชันนี้คือ 10 ถึง 12 ล้าน เนื่องจากฉันต้องทำการเชื่อมต่อ 300 กับ superpeers ที่แตกต่างกันจึงเป็นไปได้ที่แต่ละแพ็กเก็ตจะพยายามแทรกอย่างน้อย 300 ครั้ง (ซึ่งอาจเป็นเหตุผลว่าทำไมการเก็บข้อมูลนี้ไว้ในหน่วยความจำจึงเป็นตัวเลือกที่สมเหตุสมผลเท่านั้น) ปัจจุบันฉันใช้พจนานุกรมเพื่อจัดเก็บข้อมูลนี้ แต่เนื่องจากรายการจำนวนมากที่ฉันพยายามจัดเก็บฉันจึงพบปัญหากับกองวัตถุขนาดใหญ่และปริมาณการใช้หน่วยความจำเติบโตอย่างต่อเนื่องตลอดเวลา Dictionary<ulong, Packet> public class Packet { public ushort RequesterPort; public bool IsSearch; public string SearchText; public bool Flagged; public …

1
ประสิทธิภาพของพจนานุกรม C #
พจนานุกรม C # เป็นวิธีที่ง่ายในการค้นหาว่ามีบางอย่างมีอยู่ ฯลฯ ฉันมีคำถามว่าพวกเขาทำงานอย่างไร สมมุติว่าฉันใช้ ArrayList แทนพจนานุกรม แทนที่จะใช้ContainsKey(หรือวิธีที่เทียบเท่าในภาษาอื่น) ฉันวนลูป ArrayList เพื่อตรวจสอบว่ามีบางสิ่งอยู่ที่นั่น (หรือทำการค้นหาแบบไบนารีถ้าข้อมูลเรียงลำดับหรือคล้ายกัน) ประสิทธิภาพแตกต่างกันอย่างไร เป็นContainsKeyวิธีการที่ใช้บางส่วนวิธีที่มีประสิทธิภาพมากกว่าการวนลูปผ่านปุ่มและตรวจสอบว่าสิ่งที่ฉันค้นหาอยู่? ถ้าสมมติว่าฉันได้สร้างฟังก์ชันแฮชเฉพาะซึ่งสอดคล้องกับประเภทของข้อมูลที่ฉันมีและได้รับการออกแบบมาโดยเฉพาะสำหรับชุดข้อมูลนั้นใช่แล้วฟังก์ชันแฮชนั้นเร็วกว่าการวนลูปผ่านข้อมูล แต่พจนานุกรมทั่วไป เมธอด containKey นั้นไม่เฉพาะเจาะจงกับข้อมูลที่ได้รับ แต่เป็นวิธีการค้นหาทั่วไป โดยทั่วไปสิ่งที่ฉันถามคือ พจนานุกรมมีประโยชน์กับโปรแกรมเมอร์ พวกเขามีวิธีการที่ช่วยในหลายสิ่งและพวกเขารวมสตริงกับจำนวนเต็ม (คีย์และค่า) และอีกมากมาย แต่เกี่ยวกับประสิทธิภาพพวกเขาเสนออะไร สิ่งที่แตกต่างในการมีที่dictionaryVS ArrayListของstructs(string,int)

4
ขีด จำกัด ขนาดที่ใช้ได้จริงของ Hashtable และ Dictionary ใน c #
อะไรคือข้อ จำกัด ในทางปฏิบัติสำหรับจำนวนรายการที่พจนานุกรม C # 4 หรือ Hashtable สามารถมีได้และจำนวนไบต์ทั้งหมดโครงสร้างเหล่านี้อาจมีเหตุผล ฉันจะทำงานกับวัตถุจำนวนมากและต้องการทราบว่าโครงสร้างเหล่านี้เริ่มมีปัญหาเมื่อใด สำหรับบริบทฉันจะใช้ระบบ 64 บิตกับหน่วยความจำมากมาย นอกจากนี้ฉันจะต้องค้นหาวัตถุโดยใช้รูปแบบบางอย่างหรือ 'คีย์' เมื่อพิจารณาถึงความต้องการประสิทธิภาพวัตถุเหล่านี้จะต้องอยู่ในหน่วยความจำและส่วนใหญ่จะมีอายุการใช้งานยาวนาน อย่าลังเลที่จะแนะนำวิธีการ / รูปแบบอื่น ๆ แม้ว่าฉันจะต้องหลีกเลี่ยงการใช้ห้องสมุดบุคคลที่สามหรือโอเพ่นซอร์ส สำหรับเหตุผลในสเปคฉันต้องสามารถสร้างสิ่งนี้โดยใช้ native C # ( หรือ C ++ \ CLI )

3
ใน Python 3.4+ ทำไมฉันควรใช้ namedtuple บน SimpleNamespace เมื่อไม่ได้ใช้ dict ดูเหมือนว่าจะคล้ายกันมาก
เมื่อถึงจุดหนึ่งคุณอาจพบกับฟังก์ชั่นที่มีข้อโต้แย้งมากมาย บางครั้งมันก็สมเหตุสมผลที่จะรวมการขัดแย้งบางอย่างเข้ากับการโต้แย้งสุดยอด ฉันทำสิ่งนี้บ่อยครั้งด้วย dicts แต่ตอนนี้ฉันกำลังมองหาวิธีที่ดีกว่าในการทำมัน ฉันอยากจะกลับ ... def do_something(ax, ay, az, bu, bv, c): # Do something ... เข้าสู่ ... def do_something(a, b, c): # Do something ... ที่ไหนaและbมีตัวแปรย่อย วิธีหนึ่งในการทำเช่นนี้คือ: A = namedtuple('A', 'x, y, z') a = A(ax, ay, az) B = namedtuple('B', 'u, v') b = B(bu, bv) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.