我有一个日期列表,想创建一个字典,将一天的前 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'}
