在Python中的列表中存储列表名称

时间:2018-03-13 00:17:07

标签: python

如何在Python中的列表中存储列表名称?

我需要将六个列表组合成一个大列表。如果六个列表中的任何列表为空,那么我想添加空括号"()"到最后一个大清单,表明一个空列表。

这是我尝试的但是它没有工作,因为我将列表名称存储为masterList中的字符串,

// read data from file and split it by '\n', each line contains a data like `SomeName,SomeValue`
var file = cat('/data.csv');
var data = file.split('\n');

// check if we have such records
for (var i = 0; i < data.length; i++) {
   var nameAndValue = data[i].split(',');
   printjson(db.YouDB.findOne({"name": nameAndValue[0]}));
}

// update records
for (var i = 0; i < data.length; i++) {
   var nameAndValue = data[i].split(',');
    printjson(db.YouDB.update({"name": namesAndValue[0]}, {$set:{"value":nameAndValue[1]}}));
}

这会产生以下输出:

masterList=["primaryP","primaryG","primaryAin","primaryAout","primaryDin","primaryDout"]


primaryP=['VDD']
primaryG=['VSS']
primaryAin=[]
primaryAout=[]
primaryDin=['A', 'X', 'M', 'SEL']
primaryDout=['Y']

for item in masterList:
    if item==[] :
        item=["()"]
    else:
        item=' '.join(item)
        item=[item]

CSRPGPrimary=primaryP+primaryG+primaryAin+primaryAout+primaryDin+primaryDout

print("CSRPGPrimary=", CSRPGPrimary)

但是,我想要的输出是

('CSRPGPrimary=', '//PG PRIMARY ("VDD") ("VSS") ("A") ("X") ("M") ("SEL") ("Y")')

任何输入?

4 个答案:

答案 0 :(得分:3)

你很亲密,这就是你想要的:

masterList=[primaryP, primaryG, primaryAin, primaryAout, primaryDin, primaryDout]
CSRPGPrimary = ['("'+' '.join(item)+'")' if item else '()' for item in masterList]

请注意,在for循环中,修改item不会修改列表内容,只会重新分配引用。 (item指向列表的元素,然后你只是指向其他东西,它对列表本身没有任何作用)

答案 1 :(得分:2)

CSRPGPrimary = []

primaryP=['VDD']
primaryG=['VSS']
primaryAin=[]
primaryAout=[]
primaryDin=['A', 'X', 'M', 'SEL']
primaryDout=['Y']

masterList=[primaryP,primaryG,primaryAin,primaryAout,primaryDin,primaryDout]

for item in masterList:
    if item:
        CSRPGPrimary.append( "(" + ' '.join(item) + ")" )
    else:
        CSRPGPrimary.append("()")



print("CSRPGPrimary=", CSRPGPrimary)

CSRPGPrimary= ['(VDD)', '(VSS)', '()', '()', '(A X M SEL)', '(Y)']

答案 2 :(得分:1)

为什么要存储列表名称而不是列表本身?

masterList = [primaryP, primaryG, primaryAin, primaryAout, primaryDin, primaryDout]

此外,打印值可能更容易,而不是修改循环中的项目。这应该可以为您提供所需的输出。

答案 3 :(得分:1)

您的代码中未更改主列表值。

primaryP = ['VDD']
primaryG = ['VSS']
primaryAin = []
primaryAout = []
primaryDin = ['A', 'X', 'M', 'SEL']
primaryDout = ['Y']

masterList = [primaryP, primaryG, primaryAin, primaryAout, primaryDin, primaryDout]

for i in range(0, len(masterList)):
    if len(masterList[i]) == 0:
        masterList[i] = ["()"]
    else:
        masterList[i] = ' '.join(masterList[i])
        masterList[i] = ["(" + masterList[i] +")"]

CSRPGPrimary = masterList[0] + masterList[1] + masterList[2] + masterList[3] + masterList[4] + masterList[5]
#primaryP + primaryG + primaryAin + primaryAout + primaryDin + primaryDout

print("CSRPGPrimary=", CSRPGPrimary)
  

答案

CSRPGPrimary= ['(VDD)', '(VSS)', '()', '()', '(A X M SEL)', '(Y)']
相关问题