将python字典键字符串转换为键日期

将python字典键字符串转换为键日期,python,for-loop,dictionary,Python,For Loop,Dictionary,假设你有一本字典: a={'20101216':5,'20100216':1,'20111226':2,'20131216':5} 两个键具有相同的值。如何打印最大键日期(是一个字符串)和值?比如: 5 at 12/16/2013 我尝试了for循环键和值,并打印最大键和最大值,但没有成功 编辑:我最初尝试将字符串日期数组转换为日期对象。但它失败了[b] b=['20101216','20100216','20111226','20131216'] c=[5,1,2,5] z=[]

假设你有一本字典:

a={'20101216':5,'20100216':1,'20111226':2,'20131216':5}
两个键具有相同的值。如何打印最大键日期(是一个字符串)和值?比如:

5 at 12/16/2013
我尝试了
for
循环键和值,并打印最大键和最大值,但没有成功

编辑:我最初尝试将字符串日期数组转换为日期对象。但它失败了[b]

b=['20101216','20100216','20111226','20131216']
c=[5,1,2,5]  

z=[]
        for strDate in b:
            g=[datetime.datetime.strptime(strDate, '%Y%m%d')]
            if g not in z:
                z.append(g)
然后,如果它起作用,我会在我的新数组[z]上做另一个for循环,以正确格式化每个日期元素(m/d/y)。接下来,我会将这两个数组压缩到一个字典中

比如:

这会导致

d={12/16/2010:5,02/16/2010:1,12/26/2011:2,12/16/2013:5}
最后,我会尝试查找max date key和max value。并将其打印如下:

5 at 12/16/2013
但是由于转换数组b失败,我想也许从一开始就使用字典可能会产生更好的结果;博士:

max(a.items(), key = lambda x: (x[1], x[0]))
基本上,问题是您无法直接访问dict的值,并且仍然需要对数据进行排序。因此,
dict.items()
提供了元组列表,即

a.items()
[('20101216', 5), ('20131216', 5), ('20111226', 2), ('20100216', 1)]
然后,您所需要的就是获取该列表的最大值。获取最大值的简单解决方案是maxfunc。由于您的问题有点复杂,您应该利用
max
key参数(查看一下)并使用“复合”排序键。在这种情况下,lambda函数是一种解决方案。你可以表达任何你需要分类的东西。因此,在元组中按2个值进行排序,并具有相应的优先级

max(l, key = lambda x: (x[1], x[0])) # where l is iterable with tuples

你试过Awsom,发布你试过的东西…你失败了什么?查找哪两个键具有相同的值?找到最大密钥?将字符串转换为日期?你在问题中提到了所有这些东西,但不清楚你在问什么。你可以使用
max(a.values())
在dict中获得最大可能值,然后使用列表理解(或
for
循环)在
a.items()
上选择具有该值的键。
max(l, key = lambda x: (x[1], x[0])) # where l is iterable with tuples