у меня есть список, в котором содержится больше слов, и я хочу удалить один из них, но этот вопрос - динамика - PullRequest
1 голос
/ 29 февраля 2020

так что у меня есть список, и в нем у меня есть некоторый dict, у меня есть функция, где ask с 2 входами, которые dict add, затем у меня есть другая функция с 1 входом, для которого dict удалить, можно ли это сделать?

my_list = [{"a":"b"},{"c":"d"}]

def add_dict():
    my_dict = {}
    add_key = input("insert key : ")
    add_value = input("insert value: ")
    my_dict[add_key] = add_value
    return my_list.append(my_dict)

если я добавляю что-то вроде {"e": "f"} становится

my_list = [{"a":"b"},{"c":"d"},{"e":"f"}]

мне нужна функция, которая удаляет диктовку типа {"c": "d" }

def remove_dict():
  delete = input("with dict want remove? ")

где результат должен быть

my_list = [{"a":"b"},{"e":"f"}]

Ответы [ 3 ]

0 голосов
/ 01 марта 2020

Вы можете просто пройтись по списку диктов и проверить, является ли элемент, который вы хотите удалить, ключом в каждом диктовке.

my_list = [{"a":"b"},{"c":"d"},{"e":"f"}]
delete = input("with dict want remove? ")
for index, dic in enumerate(my_list):
    if delete in dic:
        del my_list[index]
print(my_list)

ВЫХОД

with dict want remove? c
[{'a': 'b'}, {'e': 'f'}]
0 голосов
/ 01 марта 2020
* * * * * * * * * * * * * * * * * * * * * * * * * Для вашего варианта использования

кажется, что для сохранения ваших входных данных в формате dict это более удобно, чем в списке:

my_dict = {"a":"b", "c":"d"}

def add_dict():
    add_key = input("insert key : ")
    add_value = input("insert value: ")
    my_dict[add_key] = add_value

и для удаления:

def remove_dict():
    key = input("with dict want remove? ")
    my_dict.pop(key) # you may want to check if the key is in the dict
0 голосов
/ 29 февраля 2020

Предполагая, что вы просто хотите удалить значение, указав ключ словаря, вы можете сделать следующее:

def remove_dict():
    delete_value = str(input("with dict want remove? "))
    for i in range(len(my_list)-1):
        if list(my_list[i].keys()) == [delete_value]:
            del my_list[i]

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

например:

my_list = [{"a":"b"},{"c":"d"},{"e":"f"}]
my_list
[{'a': 'b'}, {'c': 'd'}, {'e': 'f'}]

remove_dict()
with dict want remove? c

my_list
[{'a': 'b'}, {'e': 'f'}]

просто примечание: при настройке вам не нужно использовать кавычки ('') при вводе.

если вы хотите указать полное значение словаря (т.е. {"c": "d"}), тогда это будет работать:

def remove_dict():
delete_value = input("with dict want remove? ")
for i in range(len(my_list)-1):
    if str(my_list[i]) == delete_value:
        del my_list[i]

, тогда вы получите:

remove_dict()
with dict want remove? {'c': 'd'}

my_list
[{'a': 'b'}, {'e': 'f'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...