跟踪字典中的键和值

时间:2019-03-05 18:32:05

标签: python

假设我有一个字典'd = {'Monday':{1:[2],5:[6],8:[9]},'Tuesday':{4:[11,12], 7:[13,15]}},我想返回“星期二”,因为星期二内的每个键都具有比“星期一”内的键更多的值。这是我的方法。有人可以帮忙吗?谢谢。

def total(d):
    name = ''
    count = 0
    for day in d:
        for num in d[day]:
            count = len(d[day][num])
            name = day
    return name

2 个答案:

答案 0 :(得分:-1)

您可以将max函数与生成器表达式一起使用,该表达式返回每个子字典的子列表的最大长度,并将键作为元组的第二项输出:

max((max(map(len, v.values())), k) for k, v in d.items())[1]

这将返回:Tuesday

答案 1 :(得分:-1)

您需要一个变量,该变量保存到目前为止找到的最高计数,并在当前计数较高时进行更新。您还应该只在发生这种情况时更新name

def total(d):
    name = ''
    maxcount = 0
    for day in d:
        for num in d[day]:
            count = len(d[day][num])
            if count > maxcount:
                maxcount = count
                name = day
    return name

如果两天都有长度最长的商品,则将返回第一天。