【问题标题】:python) can you translate this code? (for, for, if statement, COCI 2012/2013)python) 你能翻译这段代码吗? (对于,对于,如果声明,COCI 2012/2013)
【发布时间】:2022-01-19 12:03:37
【问题描述】:

这是来自 COCI 2012/2013 第六轮的拨号任务:https://hsin.hr/coci/archive/2012_2013/contest6_tasks.pdf page 2

dial = {"ABC":3, "DEF":4, "GHI":5, "JKL":6, "MNO":7, "PQRS":8, "TUV":9, "WXYZ":10}
phN = input()
time = 0

for i in range(len(phN)):
    for v in (dial.get(key) for key in dial.keys() if phN[i] in key):  
        time += v

print(time)

我尝试使用字典,所以我想找到如何匹配字典但其中的一部分。 我用谷歌搜索并找到了答案:

for v in (dial.get(key) for key in dial.keys() if phN[i] in key):

为什么 dial.get(key) 停留在 for key ~ 语句前面? 为什么 for 语句后面是 if 语句? 这种声明的名称是什么?(我怎么能用谷歌搜索这个?)

【问题讨论】:

    标签: for-loop if-statement


    【解决方案1】:

    您正在使用列表压缩linklink get函数是从一个dict中获取一个值,但是如果key不存在可以传一个默认值:

    a = {'k':'value'}
    
    a['k'] # 'value'
    a['f'] # Raise Exception
    
    a.get('k') # 'value'
    a.get('f','default') # 'default'
    

    语法如下所示

    for key in dial:
      if phN[i] in key:
         for v in dial.get(key):
           print(v)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      相关资源
      最近更新 更多