dict值传递到函数中

2024-09-26 17:57:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典

a={
'set1': {'fileName': 'filename1', 
'moduleName': 'modulename1',  
'connection1.name': 'connection1', 
'connection.test':'connectiontest1',
'connection2.name': 'connection2', 
'connection.test':'connectiontest2',
'queue1.name': 'queue1',
'queue1.test':'queuetest1',
'topic1.name':'topic1',
'topic1.test':'topic1test',
'topic2.name':'topic2',
'topic2.test':'topic2test',
'ServerName': 'serverone', 
'DeploymentName': 'deployment1'
},

'set2':{'fileName': 'filename2', 
'moduleName': 'modulename2',  
'connection1.name': 'connection1', 
'connection.test':'connectiontest1',
'queue1.name': 'queue1',
'queue1.test':'queuetest1',
'topic1.name':'topic1',
'topic1.test':'topic1test',
'topic2.name':'topic2',
'topic2.test':'topic2test',
'ServerName': 'servertwo', 
'DeploymentName': 'deployment2'
}}

在每个集合中,我需要将其传递给一个函数,以便从上面的字典创建一个服务器

def create_server_config(fileName,moduleName,connection,connectiontest,topic,topictest,queue,queuetest,servername,deploymentname):

    create_queue(queue,queuetest)

    create_topic(topic,topictest)

    create_connection(connection,connectiontest)

在本文中,我希望将每个集合作为参数传递到函数中,以便它为每个集合创建一个服务器,这里的问题是队列、主题、连接在每个集合中都有多个增量值。所以有人帮我把它传递给函数吗。例如,如果我想创建一个队列,那么在create_server_config函数下,需要通过与set1 dict相关的所有队列和queuetest


Tags: 函数nametesttopic队列queuecreateconnection
1条回答
网友
1楼 · 发布于 2024-09-26 17:57:40

我有几个问题要问你。基于此,答案可能会改变

下面的代码假设如下:

  1. 在Set1&;Set2,有两个connection.test键。这可能是个打字错误。我假设第一个是connection1.test,第二个是connection2.test

  2. connection1.name、queue1.name和topic1.name将始终存在于每个集合中

  3. 如果topic2.name存在,但connection2.name和queue2.name不存在,则可以传递connection1.name和queue1.name值以创建服务器配置

  4. 类似地,如果存在connection2.nameconnection2.testqueue2.namequeue2.testtopic2.nametopic2.test的任何组合,但其他组合不存在,则来自xxx1.namexxx1.test的值将用于xxx是连接、队列或主题的位置

此代码将为dict的每个值调用create server config函数:

a={
    'set1':{'fileName': 'filename1', 
            'moduleName': 'modulename1',  
            'connection1.name': 'connection1', 
            'connection1.test':'connectiontest1',
            'connection2.name': 'connection2', 
            'connection2.test':'connectiontest2',
            'queue1.name': 'queue1',
            'queue1.test':'queuetest1',
            'topic1.name':'topic1',
            'topic1.test':'topic1test',
            'topic2.name':'topic2',
            'topic2.test':'topic2test',
            'ServerName': 'serverone', 
            'DeploymentName': 'deployment1'
           },

    'set2':{'fileName': 'filename2', 
            'moduleName': 'modulename2',  
            'connection1.name': 'connection1', 
            'connection1.test':'connectiontest1',
            'queue1.name': 'queue1',
            'queue1.test':'queuetest1',
            'topic1.name':'topic1',
            'topic1.test':'topic1test',
            'topic2.name':'topic2',
            'topic2.test':'topic2test',
            'ServerName': 'servertwo', 
            'DeploymentName': 'deployment2'
           }
  }
for s,setkey in a.items():
    fileName       = setkey['fileName']
    moduleName     = setkey['moduleName']
    connection     = setkey['connection1.name']
    connectiontest = setkey['connection1.test']
    topic          = setkey['topic1.name']
    topictest      = setkey['topic1.test']
    queue          = setkey['queue1.name']
    queuetest      = setkey['queue1.test']
    servername     = setkey['ServerName']
    deploymentname = setkey['DeploymentName']

    print (fileName,moduleName,                     \
                         connection,connectiontest, \
                         topic,topictest,queue,     \
                         queuetest,servername,deploymentname)

    create_server_config(fileName,moduleName,       \
                         connection,connectiontest, \
                         topic,topictest,queue,     \
                         queuetest,servername,deploymentname)

    flag = False

    if 'connection2.name' in setkey:
        flag = True
        connection     = setkey['connection2.name']
        
    if 'connection2.test' in setkey:
        flag = True
        connectiontest = setkey['connection2.test']

    if 'queue2.name'      in setkey:
        flag = True
        queue          = setkey['queue2.name']
        
    if 'queue2.test'      in setkey:
        flag = True
        queuetest      = setkey['queue2.test']

    if 'topic2.name'      in setkey:
        flag = True
        topic          = setkey['topic2.name']
        
    if 'topic2.test'      in setkey:
        flag = True
        topictest      = setkey['topic2.test']

    if flag:
        print (fileName,moduleName,                 \
                         connection,connectiontest, \
                         topic,topictest,queue,     \
                         queuetest,servername,deploymentname)

        create_server_config(fileName,moduleName,   \
                         connection,connectiontest, \
                         topic,topictest,queue,     \
                         queuetest,servername,deploymentname)

相关问题 更多 >

    热门问题