簡體   English   中英

在python的字典列表中訪問相同的鍵:值對

[英]Accessing same key:value pair in list of dictionaries in python

在 python 中,我有一個包含大約 12 個字典的列表城市,每個字典在每個字典的完全相同的位置包含 4 個鍵:值對。 如何在每個字典中訪問或打印相同的值對?

如果您知道鍵的名稱(在字典中的鍵值巴黎),您可以在列表中循環並直接打印它。例如:下面如果我們知道有鍵的 2 個字典的列表:1,2,3我們直接打印值:

city=[
    {1:'bhopal', 2:'newyork', 3:'italy'},
    {1:'london', 2:'india', 3:'europe'}
]

for i in city:
    print(i[1]), i[2] , i[3])

for i in city:
    for key,value in i.items():
         print (key,value)

我希望這有效。

由於您的字典的鍵總是相同的,您可以遍歷列表的所有元素並打印與您選擇的特定鍵相對應的值。

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

我寫了一個國家的例子,看到我不知道你的代碼(ps所有數據都是假的):

dic={'uk':{'capital':'london','dimension':235423,'population':31321},'france':{'capital':'paris','dimension':43523,'population ':542342}, 'italy':{'capital':'rome', 'dimension':935123, 'population':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,'資本':'巴黎'}]

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

輸出:

rome 
london 
paris

為什么不為此創建一個自定義類?

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM