【问题标题】:Python iteration in a dictionary字典中的 Python 迭代
【发布时间】:2012-12-08 15:44:51
【问题描述】:

我被以下代码卡住了:

nonsense = 'faxoyk'
R = {CHR : 'afokyx'.index(CHR) for CHR in nonsense}
print R

我是 python 新手,我对如何设置键和值感到困惑,对此过程的任何见解将不胜感激。

【问题讨论】:

  • 您对哪一点感到困惑?打印的内容是否解释了代码的作用?
  • 用于解释代码的作用
  • 我认为人们想知道您是否对列表/字典理解特别感到困惑,或者您是否对字典一般感到困惑?
  • 哦,抱歉,这是关于列表/字典理解的,但您在下面完美地解释了它。谢谢

标签: python dictionary iteration


【解决方案1】:

字典理解是列表理解之后的一个特性,在 python 中:
List Comprehensions

nonsense 是一个字符串。但它是一个序列对象,所以使用for CHR in nonsense 循环它意味着你循环了每个字符:

print [CHR for CHR in nonsense]
#['f', 'a', 'x', 'o', 'y', 'k']

循环的值部分本身看起来像这样:

['afokyx'.index(CHR) for CHR in nonsense]
[1, 0, 5, 2, 4, 3]

当您执行字典理解时,在每个循环中,CHR 是字符串中的一个字符。您要求它将键设置为CHR,并将该键的值设置为字符串文字"afokyx"CHR 的索引

在 python2.7 之前(在引入 dict 理解之前)它在列表理解中看起来像这样:

print [(CHR, 'afokyx'.index(CHR)) for CHR in nonsense]
# [('f', 1), ('a', 0), ('x', 5), ('o', 2), ('y', 4), ('k', 3)]
R = dict((CHR, 'afokyx'.index(CHR)) for CHR in nonsense)

【讨论】:

    【解决方案2】:

    如何在字典中设置键和值?

    假设你有字典:

    d = {}
    

    将值设置为您将执行的键:

    d['key'] = 'value'
    

    得到:

     d['key']
    

    您可以像这样在初始化期间设置键和值解析:

     d = {'key':'value'}
    

    但是你已经处理了字典推导。有点高级的东西:

    R = {CHR : 'faxoyk'.index(CHR) for CHR in nonsense}
    

    你可以这样理解这一行:

    nonsense = 'faxoyk'
    R = {}
    for CHR in nonsense:
        R[CHR] = 'faxoyk'.index(CHR)
    
    print R
    

    每个字符串都有方法index()

    string.index() 返回此字符串中某个字母的索引。例如:字符串'faxoyk'中字母'x'的索引是2,字母'f'的索引是0等等。这是因为 Python 中可迭代对象的索引从 0 开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2014-09-26
      • 2020-07-14
      • 1970-01-01
      相关资源
      最近更新 更多