2015-04-27 3 views
1

Предположим, я предоставить список словарей, гдеКак получить доступ к индексам списка словарей?

dict1 = dict(a = 2, b = 5, c = 7) 
dict2 = dict(c = 5, d = 5, e = 1) 
dict3 = dict(e = 2, f = 4, g = 10) 
list_of_dictionaries = [dict1, dict2, dict3] 

Как бы я быть в состоянии найти значение самого высокого показателя (так называемый последним словарем)?

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

Как я могу удалить c из второго словаря вместо первого?

+1

Для начала вашего определения словарей потерпит неудачу. –

+0

Жаль об этом! Исправлена. – programmer2222

+1

Вы могли бы также «зафиксировать» его, просто удалив тег «python». –

ответ

1

Ключ обращается вспять по списку с обратным индексированием (a_list[::-1]). Оттуда вы найдете какой-либо словарь, соответствующий требованиям, которые его изменяют, и выйти из функции или цикла - отсюда ранние return.

Этот код:

def get_last(bucket,key): 
    for d in bucket[::-1]: 
    if key in d.keys(): 
     return d[key] 
    return None 

def set_last(bucket,key,val): 
    for d in bucket[::-1]: 
    if key in d.keys(): 
     d[key] = val 
     return 

def pop_last(bucket,key): 
    out = None 
    for d in bucket[::-1]: 
    if key in d.keys(): 
     return d.pop(key) 

dict1 = {'a': 2, 'b': 5, 'c': 7} 
dict2 = {'c': 5, 'd': 5, 'e': 1} 
dict3 = {'e': 2, 'f': 4, 'g': 10} 
list_of_dictionaries = [dict1, dict2, dict3] 

print get_last(list_of_dictionaries ,'c') 
set_last(list_of_dictionaries ,'c',7) 
print list_of_dictionaries 
popped = pop_last(list_of_dictionaries ,'c') 
print popped 
print list_of_dictionaries 

Дает:

5 
[{'a': 2, 'c': 7, 'b': 5}, {'c': 7, 'e': 1, 'd': 5}, {'e': 2, 'g': 10, 'f': 4}] 
7 
[{'a': 2, 'c': 7, 'b': 5}, {'e': 1, 'd': 5}, {'e': 2, 'g': 10, 'f': 4}] 
0

Я не совсем уверен, что вы имеете в виду, но я тусклый, чтобы показать вам несколько вещей, которые могли бы помочь:

First вот как ваши словари должны выглядеть так:

dict1 = {"a" :2, "b" : 5, "c" :7} 
dict2 = {"c" :5, "d" :5, "e" :1} 
dict3 = {"e" :2, "f" :4, "g" :10} 

Тогда вы спросили об этом: «Как я могу удалить c из второго словаря вместо первого?»

Вы можете сделать удалить это следующим образом:

del dict2["c"] 
Смежные вопросы