如何创建字典,其中键为列表字典的键,值为最长的列表



我有这个字典列表的字典:

dict_countries ={'uk': [{'datetime': '1955-10-10 17:00:00', 'city': 'chester'},{'datetime': '1956-09-10 13:00:00', 'city': 'london'}],'us': [{'datetime': '1974-10-10 23:00:00', 'city': 'hudson'}]}
到目前为止,我已经写了这个函数(我不能使用元组)。该函数必须返回一个字典,其中Key是拥有最多景点(其列表中的字典)的国家的名称,值是景点的数量:
def country_with_most_sights(dict_countries:dict)-> dict:
record_dict = {}
for country in dict_countries 
N_sights = len(each_country)
if N_sights > record_dict[past_country]:
past_country = ***country´s name*** 
record_dict[past_country] = N_sights
return record_dict

期望的结果将是record_dict为:

record_dict = {uk:2}

有很多方法可以做到这一点。以下是一些:

  1. 查找每个值的长度,然后使用maxkey参数查找长度最长的项。

    def country_with_most_sights(dict_countries:dict)-> dict:
    return dict([max(((k, len(v)) for k, v in dict_countries.items()), key=lambda x: x[1])])
    

    解释:

    • 在字典中查找items()max()
    • dict.items()的每个元素都是包含键和值的元组。
    • 我们使用生成器表达式((k, len(v)) for k, v in dict_countries.items())
    • 将其转换为包含键和值长度的元组
    • 通过指定lambda函数,我们使用该元组的第二个元素(即值的长度)作为查找最大值的标准。
  2. 只使用字典的.keys(),并在lambda中使用此键索引到原始字典。

    def country_with_most_sights(dict_countries:dict)-> dict:
    max_key = max(dict_countries.keys(), key=lambda k: len(dict_countries[k]))
    max_val = len(dict_countries[k])
    return {max_key: max_val}
    
  3. 遍历字典的键并跟踪最长的值。然后返回该键及其长度:

    def country_with_most_sights(dict_countries:dict)-> dict:
    longest_country = "none"
    num_sights = 0
    for k, v in dict_countries.items():
    if len(v) > num_sights:
    longest_country = k
    num_sights = len(v)
    return {longest_country: num_sights}
    

    解释:

    • 遍历dict.items()
    • 如果值的长度比你以前看到的任何东西都要长,将键和值保存在longest_countrynum_sights变量中。
    • 当你用完字典中的所有条目后,从你的变量中创建返回值并返回。
dict_countries = {'uk': [{'datetime': '1955-10-10 17:00:00', 'city': 'chester'},
{'datetime': '1956-09-10 13:00:00', 'city': 'london'}],
'us': [{'datetime': '1974-10-10 23:00:00', 'city': 'hudson'}]}
val = 0
k = ''
for key in dict_countries.keys():
qqq = len(dict_countries[key])
if qqq > val:
val = qqq
k = key
ttt = {k: val}

输出
{'uk': 2}

通过变量'val'更新列表的最大大小。

相关内容

  • 没有找到相关文章

最新更新