Доступ к тому же ключу: пара значений в списке словарей в Python - PullRequest
0 голосов
/ 21 января 2019

В python у меня есть список городов, который содержит приблизительно 12 словарей, каждый из которых содержит 4 пары ключ: значение в одном и том же месте для каждого словаря. Как получить доступ или распечатать одну и ту же пару значений в каждом словаре?

Ответы [ 4 ]

0 голосов
/ 21 января 2019

Почему бы не создать собственный класс для этого?

class CustomMap(object):
    def __init__(self, *maps):
        self.maps = maps

    def __getitem__(self, key):
        found = []
        for mapping in self.maps:
            if mapping.get(key):
                found.append(mapping.get(key))
            else:
                continue
        return found

    def get(self, key):
        return self.__getitem__(key)

d = {'a': 2, 'b': 3}
e = {'a': 5, 'f': 1}

c = CustomMap(d, e)

c['a']
[2, 5]

c.get('a')
[2, 5]
0 голосов
/ 21 января 2019

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

cities = [
    {'population': 1000,
    'name': 'Oslo',
    'size': 12513200,
    'temperature': 2},
    {'population': 20000,
    'name': 'Chongqing',
    'size': 412400000,
    'temperature': 15},
    {'population': 1000,
    'name': 'Shanghai',
    'size': 5512332,
    'temperature': 33}
]

def print_specific(d, k):
    print(*[i[k] for i in d], sep='\n')

print_specific(cities, 'name') 

Вывод

Oslo
Chongqing
Shanghai
0 голосов
/ 21 января 2019

Я пишу пример для нации, которая видит, что я не знаю ваш код (ps все данные являются поддельными):

dic = {'uk': {'capital': 'london',' измерение ': 235423,' население ': 31321},' франция ': {' капитал ':' Париж ',' измерение ': 43523,' население ': 542342},' италия ': {' капитал ':'Рим', 'измерение': 935123, 'население': 4323342}}

если вы хотите взять только основную нацию, просто сделайте:

dic.keys()

это будет пять вас

['france', 'italy, 'uk']

если вы хотите динамически получать всю информацию о нации, вы можете сделать:

k=dic.keys()
for i in k:
    print dic[i]

Вывод:

{'population': 4323342, 'dimension': 935123, 'capital': 'rome'} 
{'population': 31321, 'dimension': 235423, 'capital': 'london'} 
{'population': 542342, 'dimension': 43523, 'capital': 'paris'}

Если вам нужна какая-то конкретная информация, простодобавить определенный узел на печать:

k=dic.keys()
for i in k:
    print dic[i]['capital']

Вывод:

rome
london
paris

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

l = [{'население': 4323342, «измерение»: 935123, «столица»: «Рим»}, {«население»: 31321, «измерение»: 235423, «столица»: «Лондон»'}, {' население ': 542342,' измерение ': 43523,' капитал ':' paris '}]

for i in l:
    print i['capital']

Вывод:

rome 
london 
paris
0 голосов
/ 21 января 2019

Если вы знаете имя ключа (в значении ключа paris в словаре), вы можете просто зациклить список и распечатать его напрямую. Например: ниже, если список из 2 словаря, где мы знаем, есть ключ: 1,2,3 и мы печатаем значение напрямую

город = [{1: 'Бхопал', 2: 'NewYork', 3 ': Италия'}, {1: 'Лондон', 2: 'Индии, 3: 'Европа'}]

для меня в городе: Печать (я [1]), я [2], я [3]) ибо я в городе: для ключа значение в i.items (): печать (ключ, значение)

Я надеюсь, что это работает

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