从字典列表中获取特定的键和值

Car*_*o20 7 python dictionary list python-2.7

所以我有这个字典列表:

l = [{'COUNTRY': 'UK', 'STUDENT': 'JOHN'}, {'COUNTRY': 'PT', 'STUDENT':'PEDRO'}, {'COUNTRY': 'UK', 'STUDENT': 'KYLE'}, {'COUNTRY': 'IT', 'STUDENT':'PIRLO'}, {'COUNTRY': 'PT', 'STUDENT':'ANA'}, {'COUNTRY': 'FR', 'STUDENT':'VITO'}, {'COUNTRY': 'FR', 'STUDENT':'LOUIS'}]
Run Code Online (Sandbox Code Playgroud)

我需要制作一个条形图,其中 x 轴是列表中的国家/地区,y 轴是每个国家/地区出现的次数。我的想法是将这些国家“提取”到一个列表中,如下所示:

country_list = ['UK','PT','UK','IT','PT','FR','FR']
Run Code Online (Sandbox Code Playgroud)

然后我必须计算每个国家/地区出现的次数并按频率对列表进行排序。

完成所有这些后,我将有两个列表:

country = ['UK','PT','FR','IT']

frequency = [2,2,2,1]
Run Code Online (Sandbox Code Playgroud)

有了这两个列表,我就可以制作条形图了。如何从原始词典列表中获取这两个列表?

ele*_*ena 7

有你的清单

l = [{'COUNTRY': 'UK', 'STUDENT': 'JOHN'}, {'COUNTRY': 'PT', 'STUDENT':'PEDRO'}, {'COUNTRY': 'UK', 'STUDENT': 'KYLE'}, {'COUNTRY': 'IT', 'STUDENT':'PIRLO'}, {'COUNTRY': 'PT', 'STUDENT':'ANA'}, {'COUNTRY': 'FR', 'STUDENT':'VITO'}, {'COUNTRY': 'FR', 'STUDENT':'LOUIS'}]
Run Code Online (Sandbox Code Playgroud)

您可以首先提取国家/地区的所有值:

In [18]: k = [i['COUNTRY'] for i in l]
Run Code Online (Sandbox Code Playgroud)

然后你可以使用Counterfromcollections模块:

In [19]: m = Counter(k)
Out[19]: Counter({'FR': 2, 'IT': 1, 'PT': 2, 'UK': 2})
Run Code Online (Sandbox Code Playgroud)

要获取轴:

In [20]: countries = m.keys()

In [21]: frequency = m.values()

In [22]: countries
Out[22]: ['FR', 'PT', 'UK', 'IT']

In [23]: frequency
Out[23]: [2, 2, 2, 1]
Run Code Online (Sandbox Code Playgroud)


Fuj*_*lan 2

l = [{'COUNTRY': 'UK', 'STUDENT': 'JOHN'}, {'COUNTRY': 'PT', 'STUDENT':'PEDRO'}, {'COUNTRY': 'UK', 'STUDENT': 'KYLE'}, {'COUNTRY': 'IT', 'STUDENT':'PIRLO'}, {'COUNTRY': 'PT', 'STUDENT':'ANA'}, {'COUNTRY': 'FR', 'STUDENT':'VITO'}, {'COUNTRY': 'FR', 'STUDENT':'LOUIS'}]




myDict = {}

for d in l:
  c = d['COUNTRY']
  myDict[c] = myDict.get(c,0)+1
print(myDict)  

country = myDict.values()
frequency = myDict.keys()

print(country)
print(frequency)


=========

{'UK': 2, 'PT': 2, 'IT': 1, 'FR': 2}
dict_values([2, 2, 1, 2])
dict_keys(['UK', 'PT', 'IT', 'FR'])
Run Code Online (Sandbox Code Playgroud)