【问题标题】:Creating keys and its value inside a dictionary using for loop使用 for 循环在字典中创建键及其值
【发布时间】:2018-11-03 17:19:57
【问题描述】:

我想创建一个字典,其中每个键都有doc1doc2、....、doc2105 之类的名称,它将存储来自Title_Loans.documents[0]Title_Loans.documents[1]、...的值.,Title_Loans.documents[2104]. 我正在尝试在字典中对长度(Title_Loans.documents)运行 for 循环,但它显示错误:

for i in range(len((Finance.documents)):
      ^
SyntaxError: invalid syntax

下面是我正在运行的代码。请建议我如何做到这一点。 代码: 示例:

docs = {
    'doc1': Title_Loans.documents[0],
    'doc2': Title_Loans.documents[1],
    'doc3': Title_Loans.documents[2],
    'doc4': Title_Loans.documents[3],
    'doc5': Title_Loans.documents[4]
}

尝试使用 for 循环运行上述代码以获取较大的文档。

docs = {
for i in range(len((Finance.documents)):
    doc[i]: Finance.documents[i]
    }

【问题讨论】:

  • @Rakesh 或者太多了☺
  • 我改变了它,但我仍然得到同样的错误。
  • 您正在混合两种语法:普通的 for 循环和 dict 理解(后者是 docs = {i : Finance.documents[i] for i in range(len(Finance.documents))},您可以更简单地说:docs = dict(enumerate(Finance.documents))
  • 不是正确的字典理解。

标签: python dictionary-comprehension


【解决方案1】:

如果您需要字典理解,那么您必须使用理解语法,而不是语句(理解是表达式):

docs = {"doc"+str(i): Finance.documents[i]
        for i in range(len(Finance.documents))}

不过,写成这样会更好

docs = {"doc"+str(i): documt for (i, documt) in enumerate(Finance.documents)}

不过,我不确定为什么可以使用“doc1”、“doc2”等键访问的字典比可以使用整数键访问的简单列表更好。

【讨论】:

  • 这不起作用。显示错误:} ^ SyntaxError: invalid syntax
  • doc[i] 不是用户所期望的,她的要求是像doc1doc2这样的键名
  • 要从 'doc1' 开始,您需要 str(i+1)
  • 实际上我想创建一个使用不同列表作为单独文档的文档术语矩阵,这就是我将其转换为字典的原因。
  • 这是否意味着这些条款被保存在一个单独的列表中?
【解决方案2】:

试试:

for i in range(len(Finance.documents)):

为您的invalid syntax 错误。

【讨论】:

    【解决方案3】:

    如果您希望您的密钥采用“doc(num)”形式,则创建一个字符串 doc_format = "doc{}"

    然后运行:

    docs = {doc_format.format(index+1): Finance.documents[index] for index in range(len(Finance.documents))}

    【讨论】:

    • 或枚举列表:docs = { doc_format.format(index+1): f for index, f in enumerate(Finance.documents)}
    【解决方案4】:

    您使用的dict-comprehension 语法不正确,应该是:

    {key, value for key in your_iterable}
    

    其中,值可以是key 的某个函数,反之亦然

    对于您的情况:

    docs = {"doc{}".format(i + 1): Finance.documents[i] for i in range(len(Finance.documents))}
    

    【讨论】:

      【解决方案5】:

      你也可以试试这个,

      doc = {}
      for i in range(len(Finance.documents)):
         doc[i] = Finance.documents[i]
      print(doc)
      

      【讨论】:

      • OP 在dict-comprehension 中出现语法错误,您的回答没有解决这个问题。
      • 你在迭代列表吗?或详细说明错误发生在哪里?
      猜你喜欢
      • 2019-11-23
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2019-03-29
      • 1970-01-01
      • 2018-04-18
      相关资源
      最近更新 更多