访问Dict元素时出现循环错误:'dict'对象不可调用

时间:2015-11-10 21:59:38

标签: python dictionary

我看过'dict' object is not callable SO答案,但不太明白我搞砸了什么。

我有一系列字典,然后我想浏览每一个字典并访问这些元素。

prebuilt_jars = [
{'name':'xwalk-app-jar', 'binary_jar':'xwalk_core_library/libs/xwalk_core_library_java_app_part.jar'},
]

for prebuilt_jar in prebuilt_jars:
  prebuilt_jar(
    name = prebuilt_jar['name'],
    binary_jar = prebuilt_jar['binary_jar'],
  )
  jar_deps.append(':' + prebuilt_jar['name'])

但是我得到了'dict' object is not callable

name = prebuilt_jar['name'],

binary_jar = prebuilt_jar['binary_jar'],

你知道我的语法有什么问题吗?

更新

所以我正在做的是试图压缩一堆我喜欢的规则:

prebuilt_jar(
  name = 'xwalk-app-jar',
  binary_jar = 'xwalk_core_library/libs/xwalk_core_library_java_app_part.jar',
)

jar_deps.append(':xwalk-app-jar')

prebuilt_jar是一个Buck函数,用于构建预构建的jar文件。

我希望有一个包含所有jar对象的字典,然后使用这些字典对象循环填充prebuilt_jar调用。

答案

我将循环变量命名为与函数名称相同。

for pJar in prebuilt_jars:
  prebuilt_jar(
    name = pJar['name'],
    binary_jar = pJar['binary_jar'],
  )
  jar_deps.append(':' + pJar['name'])

2 个答案:

答案 0 :(得分:0)

在字面上,这是循环变量的函数调用语法:

prebuilt_jar(
    name = prebuilt_jar['name'],
    binary_jar = prebuilt_jar['binary_jar'],
  )

您对该代码的意图是什么?

我想象一下:

for prebuilt_jar in prebuilt_jars:
  jar_deps.append(':' + prebuilt_jar['name'])

就是你的意思。

答案 1 :(得分:0)

您因为尝试call字典而导致该错误。 prebuilt_jars是一本字典,然后你可以:

prebuilt_jar(
    name = prebuilt_jar['name'],
    binary_jar = prebuilt_jar['binary_jar'],
  )

好像prebuilt_jar是一个功能。尝试做:

for prebuilt_jar in prebuilt_jars:
     print(prebuilt_jar['name'])
     print(prebuilt_jar['binary_jar'])

或者别的,如果你不想打印这些物品。