附加到带有字典值的动态列表名称

时间:2019-07-02 01:15:45

标签: python-3.x list dictionary

我希望在我遇到的python编码障碍中获得一些帮助。 当前的任务是将数千行CSV整理到一组列表中。我的CSV是2列。第一列是PC名称。第二列是建筑。 我可以使用Excel筛选,但要查看900多个建筑物清单,并用10k +台PC进行排序和分配,这将带来很大的挑战,而没有excel自动化。 所以我转向了Python。自从我上次接触它是8年前,我就感到非常生锈。我的想法是: 1)我可以将建筑物作为我在开始时声明的大量清单的参考。

Bldng1[]
Bldng2[]
Bldng3[]

2)我可以将包含第一列的2列CSV导出为PC,将第二列的CSV导出为Python字典JSON格式。 myPCs = {     “ PC1”:“ Bldng1”,     “ PC2”:“ Bldng2”,     “ PC3”:“ Bldng1”,     “ PC4”:“ Bldng1”,     “ PC5”:“ Bldng3”,

}

3)在字典中遍历一个for循环。

对于my_PC中的PC:     bldng = myPCs [pcs]#本质上将建筑物名称添加到变量中     print('Building name',bldng)#验证我的名字正确

但是我不知道现在如何将PC名称添加到建筑物列表中,因为建筑物和PC名称会随着每次迭代而改变。 我尝试过:

bldng.append = ['pcs']

认为该变量将使用建筑物名称填充,但是没有用。 关于我要去哪里或需要做什么的任何建议?我真的很讨厌做excel宏,并且很想提高我的Python技能。

基本上... 我有一组空清单

Bldng1[]
Bldng2[]
Bldng3[]
#A dictionary
myPCs={
"PC1": "Bldng1",
"PC2": "Bldng2",
"PC3": "Bldng1",
"PC4": "Bldng1",
"PC5": "Bldng3",
}
#And I want to achieve this:
Bldng1['PC1','PC3',"PC4']
Bldng2['PC2']
Bldng3['PC5']

提前谢谢!! 我已经尝试使用Google搜索,并尝试了建议的方法,但找不到适合我需求的解决方案

以下代码:

Bldng1[]
Bldng2[]
Bldng3[]
    myPCs={
    "PC1": "Bldng1",
    "PC2": "Bldng2",
    "PC3": "Bldng1",
    "PC4": "Bldng1",
    "PC5": "Bldng3",
}


    for pcs in my_PCs:
        bldng=myPCs[pcs]
        bldng.append=['pcs']


Error
bldng.append=['pcs']
AttributeError: 'str' object has no attribute 'append'

2 个答案:

答案 0 :(得分:0)

您的bldng.append行的语法不正确。 append是您要调用的函数,带有要附加的值:

bldng.append(value)

在您的for循环中,您仅迭代myPCs字典的键。您需要的是myPCs中的值。因此,将其与append函数一起使用将如下所示:

for key, value in myPCs.items():
    bldng.append(value)

哪些可以为您提供bldng的这些值:

bldng == ["Bldng1", "Bldng2", "Bldng1"]

答案 1 :(得分:0)

我一直在摆弄直到我以某种方式使它起作用。我现在找不到它的链接,但是另一位用户的解决方案建议为该组列表创建一个字典,这将使我可以轻松地追加。

bldngs={
"Bldng1":[],
"Bldng2":[],
"Bldng3":[]
}

myPCs={
    "PC1": "Bldng1",
    "PC2": "Bldng2",
    "PC3": "Bldng1",
    "PC4": "Bldng1",
    "PC5": "Bldng3",
}


for pcs in myPCs:
    print('this is the pc',pcs)
    bldng=myPCs[pcs]
    print('this is the building',bldng)
    bldngs[bldng].append(pcs)

print(bldngs)