作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从列表创建字典。如果找到较晚的日期,我希望替换该值。
像这样:
import datetime
values=[['A',datetime.date(2017,1,1)],
['B',datetime.date(2001,2,2)],
['A',datetime.date(2017,10,21)],
['B',datetime.date(2005,6,3)]]
d={}
for (k,v) in values:
if k not in d:
d[k]=v
else:
if d[k]<v:
d[k]=v
print(d)
{'B': datetime.date(2005, 6, 3), 'A': datetime.date(2017, 10, 21)}
必须有一种更简单、代码更少的方法。我怎样才能更有效地做到这一点,也许可以通过字典理解?
最佳答案
如果将键、值对列表传递给 dict
,如果存在重复的键,它会保留最后一对。因此,您可以首先按日期时间值对列表进行排序,然后使用该排序列表构建字典:
d = dict(sorted(values, key=lambda x: x[1]))
print(d)
{'A': datetime.date(2017, 10, 21), 'B': datetime.date(2005, 6, 3)}
编辑
正如 @HåkenLid 在评论中指出的那样,您不需要 sorted
中的 key
函数,因为我们只关心第一个元素相同的顺序。所以我们只能说:
d = dict(sorted(values))
关于python - 如果新值是较晚的日期,则替换字典中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47037391/
我在 View 初始化时触发事件时遇到问题。如果我使用 setTimeout 调用该事件,则会触发该事件。但是,该事件不会在 View 初始化时触发。 /*global app */ define([
我是一名优秀的程序员,十分优秀!