Удалить и редактировать значение по ключу

В псевдоклассических терминах многие лекции учат ключевое слово «this» как объект, созданный конструктором класса или объекта. Каждый раз, когда новый объект строится из класса, представьте, что под капотом создается и возвращается локальный экземпляр «этого» объекта. Я помню, как он учил так:

function Car(make, model, year) {
var this = {}; // under the hood, so to speak
this.make = make;
this.model = model;
this.year = year;
return this; // under the hood
}

var mycar = new Car('Eagle', 'Talon TSi', 1993);
// ========= under the hood
var this = {};
this.make = 'Eagle';
this.model = 'Talon TSi';
this.year = 1993;
return this;
0
задан GKE 4 March 2019 в 02:06
поделиться

1 ответ

Причина, по которой вы получаете ValueError с remove(), заключается в том, что он удаляет и элемент за значением, что означает, что вводимое значение отсутствует в списке:

myList = [1 , 2 , 3 , 4 , 5]
myList.remove(2)
print(myList)

Вывод: [1 , 3 , 4 , 5]

myList = [1 , 2 , 3 , 4 , 5]
print(myList)
myList.remove(20)
print(myList)

Вывод:

Traceback (most recent call last):
  File "main.py", line 77, in <module>
    myList.remove(20)
ValueError: list.remove(x): x not in list

Кроме того, pop() используется для стеков , при этом pop() вы удаляете по указанному индексу , если индекс не указан, он удаляет и возвращает последний элемент в списке:

myList = [1 , 2 , 3 , 4 , 5]
print(myList)
myList.pop(2)
print(myList)

Вывод: [1 , 2 , 4 , 5]

Если я понимаю, что вы правы, использование remove() или pop() - неправильный способ для этого, вы можете вместо этого использовать словарь , упрощенный пример того, как удалять по значению через VIN #, будет выглядеть примерно так:

def removeVin(vinNumbers, key):
    del vinNumbers[key]
vinNumbers = {'VIN01' : 1200 , 'VIN02' : 1500 , 'VIN03' : 1700} # Where Key is 'VIN0X' and Value is Price
removeVin(vinNumbers , 'VIN03')
print(vinNumbers) 

Чтобы запросить у пользователя VIN, он может выглядеть примерно так:

def removeVin(vinNumbers, key):
    del vinNumbers[key]
vinNumbers = {'VIN01' : 1200 , 'VINO2' : 1500 , 'VIN03' : 1700}
removeVin(vinNumbers , input("Enter VIN:"))
print(vinNumbers)

Аналогично для редактирования:

def editVin(vinNumbers, key):
    vinNumbers[key] = 1500
vinNumbers = {'VIN01' : 1200 , 'VINO2' : 1500 , 'VIN03' : 1700}
editVin(vinNumbers , input("Enter VIN:"))
print(vinNumbers)
0
ответ дан GKE 4 March 2019 в 02:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: