问题
I have below dictionary
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'
}}
in each set, I need to pass it to a function to create a server from the above dictionary.
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)
In this I want to pass each set into a function as an argument So that it will create a server for each set, the problem here is queue,topic,connection has multiple increment values in each set. so anyone helps me with how to pass it to a function. for example, if I want to create a queue then under create_server_config function , need to pass all the queue and queuetest related to set1 dict.
回答1:
I have a few questions for you. Based on that, the answer might change.
Below code assumes the following:
In Set1 & Set2, there are two
connection.testkeys. This may be a typo. I am assuming the first one isconnection1.testand second one isconnection2.testconnection1.name, queue1.name, and topic1.name will ALWAYS be present in each set
If topic2.name exists but connection2.name and queue2.name does not exist, then it is OK to pass connection1.name and queue1.name values to create server config.
Similarly, if any combination of
connection2.name,connection2.test,queue2.name,queue2.test,topic2.name,topic2.testexists but the others do not exist, then the value fromxxx1.nameorxxx1.testwill be used in its place where xxx is connection or queue or topic.
This code will call the create server config function for each value of the dict:
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)
来源:https://stackoverflow.com/questions/65229569/dict-values-pass-into-a-function