首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将字典与变量进行比较

将字典与变量进行比较
EN

Stack Overflow用户
提问于 2018-12-13 03:56:30
回答 2查看 114关注 0票数 2

我试图将一个字典值与一个变量进行比较,但由于某些原因,我无法从字典中输出我想要的部分。字典是来自html表的输出。这是我用来将html表转换成字典的代码:

代码语言:javascript
复制
with open('output.csv') as fd:
    rd = csv.DictReader(fd, skipinitialspace=True)
    for row in rd:
        lista = { k: row[k] for k in row if k in ['Name', 'Clan Days']}

这是输出:

代码语言:javascript
复制
{'Name': 'SirFulgeruL2k19', 'Clan Days': '140'}
{'Name': 'Darius', 'Clan Days': '127'}

例如,如何比较第一个字典中的氏族天数,以及如果值与我在变量中设置的值匹配,则应该以字符串形式获取名称,以便稍后在另一行中使用它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-13 03:59:52

假设您首先将数据读取到字典列表中:

代码语言:javascript
复制
data = [{ k: row[k] for k in row if k in ['Name', 'Clan Days']}
        for row in rd]

如果没有与搜索查询匹配的条目,则可以使用next()data中搜索与Clan Days值默认为None的第一个字典:

代码语言:javascript
复制
desired_clan_days = '140'
clan_name = next((entry["Name"] for entry in data 
                  if entry["Clan Days"] == desired_clan_days), None)

现在,next()将返回第一个匹配项,如果您需要所有匹配项,只需使用列表理解:

代码语言:javascript
复制
clan_names = [entry["Name"] for entry in data 
              if entry["Clan Days"] == desired_clan_days]

请注意,在最坏的情况下(未找到条目),这种搜索需要遍历data中的所有条目。如果这种类型的搜索是这种数据结构的主要用例,请考虑重新设计它以更好地适应问题-例如,将clan_days值作为带有族名列表的键:

代码语言:javascript
复制
data = { 
    "140": ["SirFulgeruL2k19"],
    "127": ["Darius"]
}

在这种情况下,获取匹配将是一个常量操作,就像data[desired_clan_days]一样简单。defaultdict(list)可以帮助你实现这一转变。

票数 2
EN

Stack Overflow用户

发布于 2018-12-13 04:01:26

我不太确定您到底想要什么,但如果它只是将一个字典值与一个变量进行比较,并在它们匹配时获取名称部分,那么您将得到如下所示的结果。

代码语言:javascript
复制
>>> dict = {'Name': 'SirFulgeruL2k19', 'Clan Days': '140'}
>>> target = 140
>>> if int(dict['Clan Days']) == target:
...    name = dict['Name']
...    
>>> name
'SirFulgeruL2k19'

编辑:读你的帖子太快了,考虑到它是HTML表格中的所有行,这段代码太简单了。使用alecxe的答案:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53750461

复制
相关文章

相似问题

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