」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Python 字典如何保持程式碼乾淨、乾燥

Python 字典如何保持程式碼乾淨、乾燥

發佈於2024-11-06
瀏覽:396

How Python Dictionaries Keep Your Code Clean and DRY

Python 字典和 DRY 原则:初学者快速指南

嘿! ?如果您正在深入研究 Python 编程,您可能偶然发现了字典,并且可能想知道“Python 中的字典到底是什么?它如何帮助我更智能地编写代码?”不用担心,让我们用一种超级简单的方式来分解它。

Python 中的字典是什么?

假设您有一个项目列表,每个项目都附加了一个唯一的标签,例如“姓名:约翰”或“年龄:25”。 Python 中的字典的工作原理与此完全相同!它是键值对的集合,其中每个键都是唯一的并指向特定值。将其视为一个迷你数据库,用于以整齐且有组织的方式存储信息。

这就像一本真正的字典,您可以在其中查找单词(键)并获取其含义(值)。很酷,对吧? ?

如何用Python制作字典?

创建字典就像馅饼一样简单。您只需使用大括号 {} 并用冒号分隔每个键值对:.

以下是制作简单字典的方法:

# Creating a dictionary to store student information
student_info = {
    'name': 'John Doe',
    'age': 21,
    'major': 'Computer Science'
}

# Printing out the dictionary
print(student_info)

这本字典存储学生的姓名、年龄和专业。注意到像“name”和“age”这样的键是如何用引号括起来的吗?这是因为键可以是字符串、数字,甚至元组!这些值可以是任何字符串、列表、其他字典,只要你能想到的。

字典如何帮助我们避免重复(DRY原则)

现在,事情变得有趣了。你可能听说过DRY原则,它代表Don't Repeat Yourself。这是一条鼓励您避免代码冗余的规则。字典如何帮助解决这个问题?我们来看看吧

使用字典之前(重复代码)

假设您想要将有关学生的信息存储在单独的变量中。它可能看起来像这样:

student1_name = 'Alice'
student1_age = 20
student1_major = 'Mathematics'

student2_name = 'Bob'
student2_age = 22
student2_major = 'Physics'

我们不仅有重复的变量名称,而且如果我们想要打印或更新这些变量,我们必须一次又一次地重复自己。这就是字典可以拯救世界的地方! ?

示例1:使用词典后(DRY版本)

使用字典,我们可以以更干净的方式存储所有这些信息:

# Using dictionaries to store student data
students = {
    'student1': {'name': 'Alice', 'age': 20, 'major': 'Mathematics'},
    'student2': {'name': 'Bob', 'age': 22, 'major': 'Physics'}
}

print(students['student1']['name'])  # Output: Alice
print(students['student2']['age'])   # Output: 22

现在,您不必为每个学生的姓名、年龄和专业创建单独的变量。您可以通过更简单的方式访问或更新信息。另外,它使您的代码更干净且更易于管理。

示例 2:使用字典避免重复

假设您想根据学生成绩创建一个简单的评分系统。如果没有字典,您可能最终会编写以下内容:

# Without dictionary (repeating code)
alice_score = 90
bob_score = 75
charlie_score = 85

if alice_score >= 85:
    print("Alice gets an A")
if bob_score >= 85:
    print("Bob gets an A")
if charlie_score >= 85:
    print("Charlie gets an A")

在这里,我们重复 if 语句并对每个学生的姓名和分数进行硬编码,这违反了 DRY 原则。

相反,使用字典,您可以避免像这样的重复:

# Using a dictionary (DRY principle)
student_scores = {'Alice': 90, 'Bob': 75, 'Charlie': 85}

for student, score in student_scores.items():
    if score >= 85:
        print(f"{student} gets an A")

现在,您拥有更干净、更短且更易于维护的代码!您只需编写一次 if 语句,它就适用于词典中的所有学生。 ?

有用的字典方法

字典带有许多内置方法,使使用它们变得轻而易举。让我们看看其中的一些:

  1. .get():帮助您避免在密钥不存在时出现错误。
   print(student_info.get('address', 'Address not available'))  
   # Output: Address not available
  1. .keys() 和 .values():获取字典中的所有键或值。
   print(student_info.keys())  # Output: dict_keys(['name', 'age', 'major'])
   print(student_info.values())  # Output: dict_values(['John Doe', 21, 'Computer Science'])
  1. .items():以对的形式获取键和值。
   for key, value in student_info.items():
       print(f'{key}: {value}')
   # Output: 
   # name: John Doe
   # age: 21
   # major: Computer Science
  1. .update():用另一个字典或键值对更新一个字典。
   student_info.update({'grade': 'A'})
   print(student_info)  
   # Output: {'name': 'John Doe', 'age': 21, 'major': 'Computer Science', 'grade': 'A'}
  1. .setdefault():如果键不存在,则添加具有默认值的键。
   student_info.setdefault('graduation_year', 2024)
   print(student_info)  
   # Output: {'name': 'John Doe', 'age': 21, 'major': 'Computer Science', 'grade': 'A', 'graduation_year': 2024}

总结

字典非常强大,可以真正帮助您在代码中遵循 DRY 原则。通过使用字典,您可以避免重复,使代码井井有条,并使其更易于阅读和维护。

因此,下次您发现自己创建了一堆类似的变量时,请考虑使用字典。它会为您节省大量的时间和精力,未来的您会感谢您! ?

编码愉快! ?

版本聲明 本文轉載於:https://dev.to/aashwinkumar/how-python-dictionaries-keep-your-code-clean-and-dry-3067?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • JFreeChart如何調整大小以適應我的JPanel?
    JFreeChart如何調整大小以適應我的JPanel?
    如何調整jfreechart 在JPANEL中添加JFReechart可能會導致超大顯示。 To address this issue, there are several options available.When creating the ChartPanel, you can:Accep...
    程式設計 發佈於2025-04-15
  • 如何在鼠標單擊時編程選擇DIV中的所有文本?
    如何在鼠標單擊時編程選擇DIV中的所有文本?
    在鼠標上選擇div文本單擊帶有文本內容,用戶如何使用單個鼠標單擊單擊div中的整個文本?這允許用戶輕鬆拖放所選的文本或直接複製它。 在單個鼠標上單擊的div元素中選擇文本,您可以使用以下Javascript函數: function selecttext(canduterid){ if(d...
    程式設計 發佈於2025-04-15
  • 如何處理PHP文件系統功能中的UTF-8文件名?
    如何處理PHP文件系統功能中的UTF-8文件名?
    在PHP的Filesystem functions中處理UTF-8 FileNames 在使用PHP的MKDIR函數中含有UTF-8字符的文件很多flusf-8字符時,您可能會在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    程式設計 發佈於2025-04-15
  • 在PHP中如何高效檢測空數組?
    在PHP中如何高效檢測空數組?
    在PHP 中檢查一個空數組可以通過各種方法在PHP中確定一個空數組。如果需要驗證任何數組元素的存在,則PHP的鬆散鍵入允許對數組本身進行直接評估:一種更嚴格的方法涉及使用count()函數: if(count(count($ playerList)=== 0){ //列表為空。 } 對...
    程式設計 發佈於2025-04-15
  • 為什麼使用Firefox後退按鈕時JavaScript執行停止?
    為什麼使用Firefox後退按鈕時JavaScript執行停止?
    導航歷史記錄問題:JavaScript使用Firefox Back Back 此行為是由瀏覽器緩存JavaScript資源引起的。要解決此問題並確保在後續頁面訪問中執行腳本,Firefox用戶應設置一個空功能。 警報'); }; alert('inline Alert')...
    程式設計 發佈於2025-04-15
  • 如何在Java字符串中有效替換多個子字符串?
    如何在Java字符串中有效替換多個子字符串?
    在java 中有效地替換多個substring,需要在需要替換一個字符串中的多個substring的情況下,很容易求助於重複應用字符串的刺激力量。但是,對於大字符串或使用許多字符串時,這可能是降低的。 利用正則表達式Example UsageConsider a scenario where ...
    程式設計 發佈於2025-04-15
  • 在Python中如何創建動態變量?
    在Python中如何創建動態變量?
    在Python 中,動態創建變量的功能可以是一種強大的工具,尤其是在使用複雜的數據結構或算法時,Dynamic Variable Creation的動態變量創建。 Python提供了幾種創造性的方法來實現這一目標。 利用dictionaries 一種有效的方法是利用字典。字典允許您動態創建密鑰並...
    程式設計 發佈於2025-04-15
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式接口中實現垂直滾動元素的CSS高度限制問題:考慮一個佈局,其中我們具有與用戶垂直滾動一起移動的可滾動地圖div,同時與固定的固定sidebar保持一致。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 $("#map").css({ margin...
    程式設計 發佈於2025-04-15
  • 您可以使用CSS在Chrome和Firefox中染色控制台輸出嗎?
    您可以使用CSS在Chrome和Firefox中染色控制台輸出嗎?
    在javascript console 中顯示顏色是可以使用chrome的控制台顯示彩色文本,例如紅色的redors,for for for for錯誤消息? 回答是的,可以使用CSS將顏色添加到Chrome和Firefox中的控制台顯示的消息(版本31或更高版本)中。要實現這一目標,請使用以下...
    程式設計 發佈於2025-04-15
  • Python高效去除文本中HTML標籤方法
    Python高效去除文本中HTML標籤方法
    在Python中剝離HTML標籤,以獲取原始的文本表示Achieving Text-Only Extraction with Python's MLStripperTo streamline the stripping process, the Python standard librar...
    程式設計 發佈於2025-04-15
  • 如何使用PHP將斑點(圖像)正確插入MySQL?
    如何使用PHP將斑點(圖像)正確插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call fil...
    程式設計 發佈於2025-04-15
  • 將C DLL函數導入Go的技巧
    將C DLL函數導入Go的技巧
    使用dllimport equivalent 中,使用CGO和SYSCALL 有多種方法將DLL函數導入GO。一種方法涉及使用CGO軟件包,該軟件包有助於為C代碼創建GO綁定。使用CGO,您可以直接調用DLL函數,就好像它們是GO函數一樣。 另一種方法利用SYSCALL軟件包。這使您可以與系...
    程式設計 發佈於2025-04-15
  • 在GO中構造SQL查詢時,如何安全地加入文本和值?
    在GO中構造SQL查詢時,如何安全地加入文本和值?
    在go中構造文本sql查詢時,在go sql queries 中,在使用conting and contement和contement consem per時,尤其是在使用integer per當per當per時,per per per當per. [&​​&&&&&&&&&&&&&&&默元組方法在...
    程式設計 發佈於2025-04-15
  • 哪種在JavaScript中聲明多個變量的方法更可維護?
    哪種在JavaScript中聲明多個變量的方法更可維護?
    在JavaScript中聲明多個變量:探索兩個方法在JavaScript中,開發人員經常遇到需要聲明多個變量的需要。對此的兩種常見方法是:在單獨的行上聲明每個變量: 當涉及性能時,這兩種方法本質上都是等效的。但是,可維護性可能會有所不同。 第一個方法被認為更易於維護。每個聲明都是其自己的語句,使...
    程式設計 發佈於2025-04-15
  • JavaScript計算兩個日期之間天數的方法
    JavaScript計算兩個日期之間天數的方法
    How to Calculate the Difference Between Dates in JavascriptAs you attempt to determine the difference between two dates in Javascript, consider this s...
    程式設計 發佈於2025-04-15

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3