我的基本数据是一个字典,其中的键是国家/地区,值是从0到9位置的名称的列表。
#base data
data
{'Newyork': ['Don Willis',
'Lewis Hamilton',
'Kimi Raikkonen',
'Daniel Ricciardo',
'Fernando Alonso',
'Max Verstappen',
'Nico Hulkenberg',
'Valtteri Bottas',
'Stoffel Vandoorne',
'Carlos Sainz'],
'Chicago': ['Don Willis',
'Fernando Alonso',...
find_city(名称,等级)应给出参赛者的姓名和等级(数字等级1为索引位置0),并返回参赛者获得特定等级的所有城市的列表。
find_city("Don Willis", 1) == ["Newyork", "Chicago", "Miami"]
find_city("Lewis Hamilton", 6) == [] #None because Lewis Hamilton never ranked 6 in any of city
到目前为止,这是我的尝试,但没有太大进展。有帮助吗?
def find_city(name, rank):
data.get("Newyork",None)
b=[]
for i in enumerate(a):
b.append(i)
for (i,v) in b:
答案 0 :(得分:0)
怎么样?
def find_city(name, rank):
city_list = []
for c, l in data.iteritems():
if l[rank - 1] == name:
city_list.append(c)
return city_list
这将循环遍历数据字典中的每个key:value,并检查该城市的结果列表中索引位置处的值(排名为-1,因为列表被零索引,而F-1驱动程序未归零)是否与name
。如果是,则将密钥(城市名称)附加到city_list。
完成后,它将返回城市列表,或者如果没有找到,则返回一个空列表。
答案 1 :(得分:0)
您不必在此处进行枚举,因为索引仅偏移了一个,我们可以从等级中减去1并查找该值
def find_city(name, rank):
l = [k for k in data if data[k][rank - 1] == name]
if len(l) == 0:
return None
return l
答案 2 :(得分:0)
在解决其中一些编程难题时,请尝试考虑是否可以用另一种方式重新构造当前的问题或任务。
一种更具体或更简单的任务框架方式是:
创建一个函数,该函数应检查字典的每个键处的列表(如果特定索引上存在值)。
data = {...}
def find_city(name, rank):
keys = []
for key in data:
if len(data[key]) < rank:
raise Exception("You tried to reach an index out of bounds")
if data[key][rank-1] == name:
keys.append(key)
return keys
答案 3 :(得分:0)
def find_city(name, rank):
for i in data:
try:
if data[i].index(name) == rank - 1:
yield i
except ValueError:
pass
遍历数据,如果列表数据[i]的名称为-1,则“屈服” 我使用了try,因为如果名称不在数据中,则会引发ValueError并且程序崩溃 附言yield返回一个类似生成器的对象,因此在接收到输出后,应使用list()函数将其转换为列表