如何在使用值列表过滤Mysql时应用条件

2024-09-30 14:34:13 发布

您现在位置:Python中文网/ 问答频道 /正文

数据库表

          verystrong   strong   moderate   weak    veryweak

US             aa          a       ba         b       caa 
UK             aa          a       baa        b       caa
Austria        a           baa     ba         caa     ca
Belgium        a           baa     ba         caa     ca
Japan          aa          a       baa        b       caa
UAE            ba          b       b          b1      c


country='UK'
traderow=exporttable.objects.filter(ratio=country).values()[0]

traderow输出:

{'id': 2, 'ratio': 'UK', 'verystrong': 'aa', 'strong': 'a', 
'moderate': 'baa', 'weak': 'b', 'veryweak': 'caa'}

接下来我有了列表a

a=['verystrong','verystrong','strong','strong','strong','strong','strong']

a是对2013年至2019年的评级,例如2019年评级为强,2013年评级为强

现在,我希望列表中的每个值与traderow中的值匹配,以找到交易评级:

我一次只能从列表中返回一个值:

value1=a[0] whihc is 'verystrong' (year 2013) 
value7=a[6] whihc is 'strong' (year 2019) 

trade_rating2013=traderow[value1]返回2013年的aatrade_rating2019=traderow[value7]返回2019年的a

我的问题是如何对整个列表有效地执行此操作,而不是对列表中的每个值单独执行?有可能应用lambda吗

我仍在学习python,非常感谢您帮助优化代码,以消除冗余并提高效率


Tags: 列表countrycaaastrongukratioba
1条回答
网友
1楼 · 发布于 2024-09-30 14:34:13

如果我很理解你的问题,那么这就是你想要的:

traderow = {
    "id": 2,
    "ratio": "UK",
    "verystrong": "aa",
    "strong": "a",
    "moderate": "baa",
    "weak": "b",
    "veryweak": "caa",
}

a = ["verystrong", "verystrong", "strong", "strong", "strong", "strong", "strong"]

for item, year in zip(a, range(2013, 2020)):
    print(f"trade_rating for {year}: {traderow[item]}")

正如你所说,如果你不想打印,你只想存储它们

trade_rating = [traderow[item] for item in a]

输出:

trade_rating for 2013: aa
trade_rating for 2014: aa
trade_rating for 2015: a
trade_rating for 2016: a
trade_rating for 2017: a
trade_rating for 2018: a
trade_rating for 2019: a

相关问题 更多 >