我想找到制造了有史以来最糟糕汽车数量的公司。
输出如下:
Worst manufacturer: Ford
Worst manufacturer: Ford
Worst manufacturer: Triumph
我试过这种方式:
def print_worst_manufacturer(car_dict):
for k,v in car_dict.items():
if len(v) > 2:
print("Worst manufacturer:",k)
def test_print_worst_manufacturer():
car_dict = {'Amphicar': ['1961'], 'Corvair': ['1961'], 'Horsey': ['1899'], 'Overland': ['1911'], 'Ford': ['1909', '1958']}
print_worst_manufacturer(car_dict)
car_dict = {'MGA': ['1958'], 'Amphicar': ['1961'], 'Aston': ['1976'], 'Horsey': ['1899'], 'Bricklin': ['1975'], 'Zunndapp': ['1958'], 'Pontiac': ['2001'], 'Chevy': ['1976', '2004'], 'Mosler': ['1985'], 'Lamborghini': ['1986'], 'Peel': ['1966'], 'Ferrari': ['1980'], 'AMC': ['1970', '1978'], 'Yugo': ['1985'], 'BMW': ['2002'], 'Ford': ['1909', '1958', '1971', '1995', '2000'], 'Crosley': ['1949'], 'GM': ['1997'], 'Fuller': ['1933'], 'Chrysler': ['1971'], 'Chrysler/Desoto': ['1934'], 'Corvette': ['1980'], 'Lotus': ['1958'], 'Waterman': ['1957'], 'Overland': ['1911'], 'Triumph': ['1970', '1975'], 'Scripps-Booth': ['1913'], 'King': ['1957'], 'Camaro': ['1982'], 'De': ['1981'], 'Briggs': ['1920'], 'Fiat': ['1998'], 'Corvair': ['1961'], 'Trabant': ['1975'], 'Plymouth': ['1997'], 'Jaguar': ['1974', '2001'], 'Maserati': ['1984'], 'Morgan': ['1975'], 'Hummer': ['2003'], 'Cadillac': ['1981', '1982'], 'Renault': ['1956']}
print_worst_manufacturer(car_dict)
car_dict ={'MGA': ['1958'], 'Amphicar': ['1961'], 'Aston': ['1976'], 'Horsey': ['1899'], 'Bricklin': ['1975'], 'Zunndapp': ['1958'], 'Pontiac': ['2001'], 'Chevy': ['1976', '2004'], 'Mosler': ['1985'], 'Lamborghini': ['1986'], 'Peel': ['1966'], 'Ferrari': ['1980'], 'AMC': ['1970', '1978'], 'Yugo': ['1985'], 'BMW': ['2002'], 'Crosley': ['1949'], 'GM': ['1997'], 'Fuller': ['1933'], 'Chrysler': ['1971'], 'Chrysler/Desoto': ['1934'], 'Corvette': ['1980'], 'Lotus': ['1958'], 'Waterman': ['1957'], 'Overland': ['1911'], 'Triumph': ['1970', '1975', 1958], 'Scripps-Booth': ['1913'], 'King': ['1957'], 'Camaro': ['1982'], 'De': ['1981'], 'Briggs': ['1920'], 'Fiat': ['1998'], 'Corvair': ['1961'], 'Trabant': ['1975'], 'Plymouth': ['1997'], 'Jaguar': ['1974', '2001'], 'Maserati': ['1984'], 'Morgan': ['1975'], 'Hummer': ['2003'], 'Cadillac': ['1981', '1982'], 'Renault': ['1956']}
print_worst_manufacturer(car_dict)
test_print_worst_manufacturer()
输出:
Worst manufacturer: Ford
Worst manufacturer: Triumph
我不确定如何修复我的第一个def功能。
答案 0 :(得分:1)
您可以使用max
作为参数key
,如下例所示:
def get_worst(a):
# For: car_dict2:
# max(a.items(), key=lambda x: len(x[1]))
# Will return:
# ('Ford', ['1909', '1958', '1971', '1995', '2000'])
# So, we take only the first element
return max(a.items(), key=lambda x: len(x[1]))[0]
car_dict1 = {'Amphicar': ['1961'], 'Corvair': ['1961'], 'Horsey': ['1899'], 'Overland': ['1911'], 'Ford': ['1909', '1958']}
car_dict2 = {'MGA': ['1958'], 'Amphicar': ['1961'], 'Aston': ['1976'], 'Horsey': ['1899'], 'Bricklin': ['1975'], 'Zunndapp': ['1958'], 'Pontiac': ['2001'], 'Chevy': ['1976', '2004'], 'Mosler': ['1985'], 'Lamborghini': ['1986'], 'Peel': ['1966'], 'Ferrari': ['1980'], 'AMC': ['1970', '1978'], 'Yugo': ['1985'], 'BMW': ['2002'], 'Ford': ['1909', '1958', '1971', '1995', '2000'], 'Crosley': ['1949'], 'GM': ['1997'], 'Fuller': ['1933'], 'Chrysler': ['1971'], 'Chrysler/Desoto': ['1934'], 'Corvette': ['1980'], 'Lotus': ['1958'], 'Waterman': ['1957'], 'Overland': ['1911'], 'Triumph': ['1970', '1975'], 'Scripps-Booth': ['1913'], 'King': ['1957'], 'Camaro': ['1982'], 'De': ['1981'], 'Briggs': ['1920'], 'Fiat': ['1998'], 'Corvair': ['1961'], 'Trabant': ['1975'], 'Plymouth': ['1997'], 'Jaguar': ['1974', '2001'], 'Maserati': ['1984'], 'Morgan': ['1975'], 'Hummer': ['2003'], 'Cadillac': ['1981', '1982'], 'Renault': ['1956']}
car_dict3 = {'MGA': ['1958'], 'Amphicar': ['1961'], 'Aston': ['1976'], 'Horsey': ['1899'], 'Bricklin': ['1975'], 'Zunndapp': ['1958'], 'Pontiac': ['2001'], 'Chevy': ['1976', '2004'], 'Mosler': ['1985'], 'Lamborghini': ['1986'], 'Peel': ['1966'], 'Ferrari': ['1980'], 'AMC': ['1970', '1978'], 'Yugo': ['1985'], 'BMW': ['2002'], 'Crosley': ['1949'], 'GM': ['1997'], 'Fuller': ['1933'], 'Chrysler': ['1971'], 'Chrysler/Desoto': ['1934'], 'Corvette': ['1980'], 'Lotus': ['1958'], 'Waterman': ['1957'], 'Overland': ['1911'], 'Triumph': ['1970', '1975', 1958], 'Scripps-Booth': ['1913'], 'King': ['1957'], 'Camaro': ['1982'], 'De': ['1981'], 'Briggs': ['1920'], 'Fiat': ['1998'], 'Corvair': ['1961'], 'Trabant': ['1975'], 'Plymouth': ['1997'], 'Jaguar': ['1974', '2001'], 'Maserati': ['1984'], 'Morgan': ['1975'], 'Hummer': ['2003'], 'Cadillac': ['1981', '1982'], 'Renault': ['1956']}
print("car_dict1: Worst manufacturer is:", get_worst(car_dict1))
print("car_dict2: Worst manufacturer is:", get_worst(car_dict2))
print("car_dict3: Worst manufacturer is:", get_worst(car_dict3))
输出:
car_dict1: Worst manufacturer is: Ford
car_dict2: Worst manufacturer is: Ford
car_dict3: Worst manufacturer is: Triumph
答案 1 :(得分:0)
list.count
返回参数在列表中出现的次数,但是您要搜索列表中的空字符串,这不会发生:
In [1]: ["a", "b"].count("a")
Out[1]: 1
In [2]: ["a", "b"].count("")
Out[2]: 0
看起来你想要列表的长度(即计算制造商拥有“最差汽车”的年数);请尝试len
,它返回列表中元素的数量:
In [3]: len(["a", "b"])
Out[3]: 2
答案 2 :(得分:0)
car_dict = {'MGA': ['1958'], 'Amphicar': ['1961'], 'Aston': ['1976'], 'Horsey': ['1899'], 'Bricklin': ['1975'], 'Zunndapp': ['1958'], 'Pontiac': ['2001'], 'Chevy': ['1976', '2004'], 'Mosler': ['1985'], 'Lamborghini': ['1986'], 'Peel': ['1966'], 'Ferrari': ['1980'], 'AMC': ['1970', '1978'], 'Yugo': ['1985'], 'BMW': ['2002'], 'Ford': ['1909', '1958', '1971', '1995', '2000'], 'Crosley': ['1949'], 'GM': ['1997'], 'Fuller': ['1933'], 'Chrysler': ['1971'], 'Chrysler/Desoto': ['1934'], 'Corvette': ['1980'], 'Lotus': ['1958'], 'Waterman': ['1957'], 'Overland': ['1911'], 'Triumph': ['1970', '1975'], 'Scripps-Booth': ['1913'], 'King': ['1957'], 'Camaro': ['1982'], 'De': ['1981'], 'Briggs': ['1920'], 'Fiat': ['1998'], 'Corvair': ['1961'], 'Trabant': ['1975'], 'Plymouth': ['1997'], 'Jaguar': ['1974', '2001'], 'Maserati': ['1984'], 'Morgan': ['1975'], 'Hummer': ['2003'], 'Cadillac': ['1981', '1982'], 'Renault': ['1956']}
# Transform the dict into a list
k = car_dict.keys ()
v = car_dict.values ()
car_list = zip (k,v)
# Sort the List: We take the second element of the List items (which is a list of the years) and use its length as the sorting criteria
car_list.sort (key = lambda x: len (x [1]))
# the last Element in the list is the one with the most years:
print car_list [-1] [0]