-1

我有以下字典

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。

4

1 回答 1

-1

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

下面的代码假设如下:

  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.name类似地,如果, connection2.test, queue2.name, queue2.test, topic2.name,的任意组合topic2.test存在但其他的不存在,则来自xxx1.nameor的值xxx1.test将用于 xxx 是连接或队列或主题的位置。

此代码将为字典的每个值调用创建服务器配置函数:

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)
于 2020-12-10T09:49:29.593 回答