字典循环

时间:2015-08-25 17:37:43

标签: python

我有一个名为Deny的数据结构:

{'1': {'From': '00:00:00:00:00:02', 'To': '00:00:00:00:00:01'},
 '2': {'From': '00:00:00:00:00:03', 'To': '00:00:00:00:00:04'}}

我需要循环以打印与From和To相关联的值。这就是我到目前为止所拥有的:

调用该函数:

self.Add(*拒绝)

被叫功能:

def Add(*Deny):
    for x in Deny.values():
        log.debug("From is %s",x['From'])
        log.debug("To is %s",x['To'])

我收到如下错误消息:'tuple' object has no attribute 'values'。我期待这样的输出:

From is 00:00:00:00:00:02
To is 00:00:00:00:00:01
From is 00:00:00:00:00:03
To is 00:00:00:00:00:04

有人可以建议这个for循环的解决方案吗?

2 个答案:

答案 0 :(得分:4)

您正在使用*args这是tuple个参数,因此在元组上调用.values显然不起作用,如果您想使用关键字args,则为**kwargs返回一个字典,以便.values()可以工作,如果你想迭代args只是迭代Deny

for x in Deny:

如果您只是传递一个参数,即您的词典,那么忘记***只需使用def Add(Deny)然后您就可以使用for x in Deny.values():

what-does-double-star-and-star-do-for-python-parameter

答案 1 :(得分:0)

当你在方法定义中使用* Deny时,*引用一个参数元组,即稍后如果使用带参数Add(a,b,c,d)的Add方法,则方法内的变量Deny将是一个元组( A B C D)。对于您的问题,可以进行如下的简单修改。

def Add(Deny):
    for x in Deny.values():
        print("From is %s"%x['From'])
        print("To is %s"%x['To'])
相关问题