我的基本数据是一个字典,其中键是国家,值是从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:发布于 2018-10-02 17:07:02
您不必在这里枚举,因为索引的值仅由1抵消,我们只需从排名中减去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发布于 2018-10-02 17:06:52
这个怎么样?
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这将遍历数据字典中的每个键: value,并检查该城市的结果列表中的值在索引位置(因为列表为零索引,F1驱动程序没有索引)是否与name匹配。如果是,则将密钥(城市名称)附加到city_list。
完成后,它要么返回一个城市列表,或者,如果没有找到,返回一个空列表。
发布于 2018-10-02 17:11:13
在解决这些编程挑战时,试着考虑一下是否可以以另一种方式重新构建手头的问题或任务。
制定任务框架的一个更具体或更简单的方法是:
创建一个函数,如果某个特定索引上存在一个值,则应该在字典的每个键上检查一个列表。
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 keyshttps://stackoverflow.com/questions/52612997
复制相似问题