我正在尝试将字典值与变量进行比较,但由于某些原因我无法从字典中输出我想要的部分。 字典是 html 表的输出。 这是我用来将 html 表转换成字典的代码:
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']}
这是输出:
{'Name': 'SirFulgeruL2k19', 'Clan Days': '140'}
{'Name': 'Darius', 'Clan Days': '127'}
如何比较第一个字典中的氏族天数,如果该值与我在变量中设置的值匹配,则应将名称作为字符串获取,以便稍后在另一行中使用它。
最佳答案
假设您首先将数据读入字典列表:
data = [{ k: row[k] for k in row if k in ['Name', 'Clan Days']}
for row in rd]
您可以使用next()
如果没有条目与您的搜索查询匹配,则在 data
中搜索与 Clan Days
值默认为 None
的第一个字典:
desired_clan_days = '140'
clan_name = next((entry["Name"] for entry in data
if entry["Clan Days"] == desired_clan_days), None)
现在,next()
会返回第一个匹配项,如果您需要所有匹配项,只需使用列表理解:
clan_names = [entry["Name"] for entry in data
if entry["Clan Days"] == desired_clan_days]
请注意,这种搜索要求您在最坏的情况下(未找到条目)循环遍历 data
中的所有条目。如果这种搜索是该数据结构的主要用例,请考虑重新设计它以更好地适应问题 - 例如将 clan_days 值作为带有部落名称列表的键:
data = {
"140": ["SirFulgeruL2k19"],
"127": ["Darius"]
}
在这种情况下,获得匹配将是一个持续的操作,并且就像data[desired_clan_days]
一样简单。 defaultdict(list)
可以帮助您进行这种转换。
关于python - 将字典与变量进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53750461/