【问题标题】:How to declare many variables?如何声明多个变量?
【发布时间】:2019-07-17 02:25:30
【问题描述】:

这是字母:

letters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'

我用这个列出了它:

chars=[]
for i in letters:
  chars.append(i)

所以我有一个字符列表。

我需要所有variables=0每一个来声明。我写道:

for i in chars:
  chars[i]=0;

但是有一个错误信息,像这样:

Traceback (most recent call last):
  File "python", line 15, in <module>
TypeError: list indices must be integers or slices, not str

问题:如何声明这些多个变量?

【问题讨论】:

  • for i in chars,循环遍历列表中的 items,而不是索引,这会导致您使用字母而不是整数来索引列表。你可能想要,for i, e in enumerate(chars)
  • 我认为这里的根本问题是你想要一个字典,而不是一个列表。像这样:chars = {}。然后for i in letters: chars[i] = 0.
  • 或者,如果您的目标是对每个字母进行计数,那么您可能只是想要chars = collections.Counter()。或者,更好的是,您甚至可以让 Counter 进行所有计数,例如 chars = collections.Counter(input_string)。
  • 我建议您再学习一两个关于聚合数据类型的教程:尤其是列表、字典和字符串。我不清楚你想做什么,但你尝试做的方式表明,使用不同的数据结构,事情会更容易。
  • 为什么要将 62 个变量设置为 0?最终程序应该做什么?

标签: python


【解决方案1】:

您可以使用tuples 或dict 的列表。一个简单的解决方案:

>>> import string
>>> letters = string.ascii_uppercase + string.ascii_lowercase + string.digits
>>> chars = dict.fromkeys(letters , 0)
>>> chars
>>> {...'a': 0, 'b': 0 ....}

使用元组列表:

>>> list(chars.items())
>>> [...('a',0), ('b', 0)...]

【讨论】:

    【解决方案2】:

    解决方案

    因此,简而言之,您需要的是输入中每个字符的character -&gt; 0 的字典(映射)。

    这是这样做的方法:

    letters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    chars = {char: 0 for char in letters}
    

    问题

    原始代码的问题在于,chars 是一个 list(因为它是在此处创建为列表:chars=[]),并且使用字符作为其索引。

    所以,第一次执行chars[i]=0;(顺便说一句,这里不需要;),i 是'A' 和chars['A']=0 产生错误。

    【讨论】:

      【解决方案3】:

      list 理解的替代方法是使用 map

      In [841]: letters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
      
      In [842]: chars = list(map(lambda l: 0, letters))
      

      或者,如果您想要 dict,就像其他答案所建议的那样

      In [844]: dict(map(lambda l: (l, 0), letters))
      

      我通常发现list/dict 理解既更快又更易读(至少对我而言)。这只是一种不同的方法

      【讨论】:

        【解决方案4】:

        如果要创建0-list,字符串长度为letters。

        letters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        chars = [0 for _ in range(len(letters))]
        

        【讨论】:

        • [ 0 代表字母中的 x ]
        【解决方案5】:

        我认为你的意思是:

        letters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        
        # dict comprehension
        dd = { x:0 for x in list(letters)}; dd
        {'A': 0,
         'B': 0,
         'C': 0,
         'D': 0,
         'E': 0,
         'F': 0,
         'G': 0,
         'H': 0,
         'I': 0,
         'J': 0,
         'K': 0,
         'L': 0,
         'M': 0,
         'N': 0,
         'O': 0,
         'P': 0,
         'Q': 0,
         'R': 0,
         'S': 0,
         'T': 0,
         'U': 0,
         'V': 0,
         'W': 0,
         'X': 0,
         'Y': 0,
         'Z': 0,
         'a': 0,
         'b': 0,
         'c': 0,
         'd': 0,
         'e': 0,
         'f': 0,
         'g': 0,
         'h': 0,
         'i': 0,
         'j': 0,
         'k': 0,
         'l': 0,
         'm': 0,
         'n': 0,
         'o': 0,
         'p': 0,
         'q': 0,
         'r': 0,
         's': 0,
         't': 0,
         'u': 0,
         'v': 0,
         'w': 0,
         'x': 0,
         'y': 0,
         'z': 0,
         '0': 0,
         '1': 0,
         '2': 0,
         '3': 0,
         '4': 0,
         '5': 0,
         '6': 0,
         '7': 0,
         '8': 0,
         '9': 0}
        

        更新:

        dd['A'] = 13
        dd
        dd{'A': 13,
         'B': 0,
         'C': 0,
         'D': 0,
         'E': 0,
         'F': 0,
         'G': 0,
         'H': 0,
         'I': 0,
        

        或者,

        list(letters) 
        ['A',
         'B',
         'C',
         'D',
         'E',
         'F',
         'G',
         'H',
         'I',
         'J',
         'K',
         'L',
         'M',
         'N',
         'O',
         'P',
         'Q',
         'R',
         'S',
         'T',
         'U',
         'V',
         'W',
         'X',
         'Y',
         'Z',
         'a',
         'b',
         'c',
         'd',
         'e',
         'f',
         'g',
         'h',
         'i',
         'j',
         'k',
         'l',
         'm',
         'n',
         'o',
         'p',
         'q',
         'r',
         's',
         't',
         'u',
         'v',
         'w',
         'x',
         'y',
         'z',
         '0',
         '1',
         '2',
         '3',
         '4',
         '5',
         '6',
         '7',
         '8',
         '9']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-03
          • 2011-05-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多