Skip to main content
 首页 » 编程设计

Python之通过迭代创建字典

2025年05月04日13java哥

我有一个日期列表,想创建一个字典,将一天的前 3 个字母映射到全名。

我试过:

day=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'] 
daydict = dict() 
for d in day:     
    daydict.update({d[:3]:d}) 

这给出了理想的结果,但后来我偶然发现了看起来更干净的代码。

daydict = dict((d[:3],d)for d in day) 

我不明白这个语法。请解释 dict((d[:3],d)for d in day) 是如何工作的?

请您参考如下方法:

更好的方法是通过使用dict comprehension expression as:

>>> day=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'] 
 
>>> {d[:3]:d for d in day} 
{'Wed': 'Wednesday', 'Sun': 'Sunday', 'Fri': 'Friday', 'Tue': 'Tuesday', 'Mon': 'Monday', 'Thu': 'Thursday', 'Sat': 'Saturday'} 

在您的解决方案中,您正在创建元组的列表,然后将其类型转换为dict。 [(d[:3],d) for d in day] 返回的值(相当于 list comprehension expression to your generator表达式)将是:

[('Mon', 'Monday'), ('Tue', 'Tuesday'), ('Wed', 'Wednesday'), ('Thu', 'Thursday'), ('Fri', 'Friday'), ('Sat', 'Saturday'), ('Sun', 'Sunday')] 

假设此值存储为 my_dict 变量。当您将其类型转换为 dict 时,您将获得所需的 dict 对象:

>>> dict(my_dict) 
{'Wed': 'Wednesday', 'Sun': 'Sunday', 'Fri': 'Friday', 'Tue': 'Tuesday', 'Mon': 'Monday', 'Thu': 'Thursday', 'Sat': 'Saturday'}