首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字典按价值查一查,按位置查回排名?

字典按价值查一查,按位置查回排名?
EN

Stack Overflow用户
提问于 2018-10-02 16:57:34
回答 4查看 57关注 0票数 0

我的基本数据是一个字典,其中键是国家,值是从0到9位置的名称列表。

代码语言:javascript
复制
#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),并返回所有参赛者获得特定排名的城市列表。

代码语言:javascript
复制
find_city("Don Willis", 1) == ["Newyork", "Chicago", "Miami"]
find_city("Lewis Hamilton", 6) == [] #None because Lewis Hamilton never ranked 6 in any of city

到目前为止,我的尝试是这样的,但进展不大。有什么帮助吗?

代码语言:javascript
复制
def find_city(name, rank):
    data.get("Newyork",None)
    b=[]
    for i in enumerate(a):
        b.append(i)
    for (i,v) in b:
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-10-02 17:07:02

您不必在这里枚举,因为索引的值仅由1抵消,我们只需从排名中减去1,然后使用该值查找

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2018-10-02 17:06:52

这个怎么样?

代码语言:javascript
复制
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。

完成后,它要么返回一个城市列表,或者,如果没有找到,返回一个空列表。

票数 0
EN

Stack Overflow用户

发布于 2018-10-02 17:11:13

在解决这些编程挑战时,试着考虑一下是否可以以另一种方式重新构建手头的问题或任务。

制定任务框架的一个更具体或更简单的方法是:

创建一个函数,如果某个特定索引上存在一个值,则应该在字典的每个键上检查一个列表。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52612997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档