【问题标题】:Passing Key:Value Pairs to Function将键:值对传递给函数
【发布时间】:2017-06-08 13:46:53
【问题描述】:

我想遍历字典中的键:值对并将它们作为参数传递给函数。在函数中,我试图返回从 API 调用中获得的值。我的最终目标是将密钥设置为等于我从 API 调用中获得的值。

def SomeFunction(key,val):
    return APICall(val)


myDict = {'a' : 'A',
          'b' : 'B',
          'c' : 'C'
         }
for key,val in myDict.items():
    key = SomeFunction(key,val)

print a
#>>>'return value from API'

当我运行它时,我收到一条错误消息,提示“a”未定义。我很难理解为什么

key = SomeFunction(key,val)

不使用 API 调用的返回值分配实例化给定键。

任何帮助都会很棒。

【问题讨论】:

  • 要分配/更改字典键的值,您必须执行dict[key] = value
  • 什么是a...?
  • 为什么要“创建与字典中的键同名的变量”?这样做是可能的,但通常这样做是一个非常糟糕的主意。如果您不想改变原始的myDict,只需使用另一个字典即可。
  • @PeterHerrick 您想在运行时根据字典的内容创建变量.. 不是一个好主意..

标签: python python-2.7


【解决方案1】:

我认为您不需要将密钥发送到 SomeFunction(),因为 API 调用仅使用 val

另外,要为 dict 中的键分配/更改值,您必须使用 dict[key] == value

所以你的代码应该改为..

def SomeFunction(key,val):
    return APICall(val)


myDict = {'a' : 'A',
          'b' : 'B',
          'c' : 'C'
         }
for key,val in myDict.items():
    dict[key] = SomeFunction(val)

现在要打印 API 调用的返回值(就像您尝试的那样),您需要再次遍历 dict 并打印键和值。

【讨论】:

    【解决方案2】:

    如果您想更改字典中某个键的值,您需要重新分配它,正如@Haris 已经指出的那样。

    for key,val in myDict.items():
        myDict[key] = SomeFunction(key,val)
    
    print myDict['a']
    

    请注意,您不能只使用print a,因为您不会神奇地获得变量a - 字符串a 仍然只是字典中的一个键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多