Добавление к имени динамического списка со значениями словаря - PullRequest
0 голосов
/ 02 июля 2019

Я надеюсь получить некоторую помощь на дорожном блоке кодирования Python, в котором я работаю.Задача состоит в том, чтобы отсортировать тысячи строк CSV в группу списков.Мой CSV составляет 2 столбца.1-й столбец - это имя ПК.вторая колонна строит.Я мог бы использовать фильтрацию Excel, но просматривая потенциально более 900 списков (зданий) с 10 тыс. Компьютеров + для сортировки и назначения, это станет большой проблемой без автоматизации Excel.Поэтому я обратился к Python.Я довольно ржавый, так как последний раз, когда я прикоснулся, это было 8 лет назад.Мои мысли были такими: 1) Я мог бы сделать ссылку на здания большой коллекцией списков, которые я объявляю в начале.

Bldng1[]
Bldng2[]
Bldng3[]

2) Я могу экспортировать CSV с двумя столбцами, который содержит первый столбец в качестве ПК и второй столбец в виде здания, в формат JSON словаря Python.myPCs = {"PC1": "Bldng1", "PC2": "Bldng2", "PC3": "Bldng1", "PC4": "Bldng1", "PC5": "Bldng3",

}

3) Итерация цикла for по словарю.

для штук в my_PCs: bldng = myPCs [pcs] # по существу введите имя здания в переменную print ('Building name', bldng) #, чтобы убедиться, что у меня правильное имя

НоЯ не могу понять, как теперь добавить имя ПК в список зданий, поскольку здание и имя компьютера будут меняться для каждой итерации.Я попытался:

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 голосов
/ 02 июля 2019

Я продолжал возиться, пока я как-то не заставил его работать.Сейчас я не могу найти ссылку на него, но решение для другого пользователя предложило создать словарь для набора списков, который позволил бы мне легко добавить его.

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)
0 голосов
/ 02 июля 2019

Ваша строка bldng.append имеет неверный синтаксис. append - это функция, которую вы вызываете с добавляемым значением:

bldng.append(value)

В вашем цикле for вы перебираете только ключи словаря myPCs. То, что вы хотите, это значения от myPCs. Таким образом, использование этого с функцией добавления будет выглядеть так:

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

Что даст вам эти значения для bldng:

bldng == ["Bldng1", "Bldng2", "Bldng1"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...