如何使用嵌套字典中的值创建列表?

时间:2019-05-09 11:33:07

标签: python

我是Python的新手,如果我的问题似乎太简单/愚蠢,请提前抱歉。

我想提取嵌套字典中某个键下的所有值。

让我解释一下我要做的事情的背景。我有一个具有4列2行的Excel文件,并按以下方式创建了一个嵌套字典:

openCL = open(path+'Client list.csv','r',encoding='utf-8')
readCL = csv.reader(openCL, quoting=csv.QUOTE_MINIMAL)

clientlist = {}

for info in readCL:
    clientcode = info[0].replace('\ufeff', '')
    clientname = info[1].lower()
    mattercode = info[2]
    mattername = info[3]
    clientlist[clientname] = {'Client Code' : clientcode, 'Matter Code': mattercode, 'Matter Name': mattername}

clientlist的输出如下:

{'hong kong co.': {'Client Code': '897', 'Matter Code': '0095', 'Matter Name': 'Incorporation of Brazilian Subsidiary'}, 'shanghai co.': {'Client Code': '965', 'Matter Code': '3569', 'Matter Name': 'Corporate Matters'}}

我想检索位于“ Matter Code”键中的所有值;为此,我想出了以下for循环:

matter_codes_only = []

for val in [x.values() for x in clientlist.values()]:
    matter_codes_only.append(clientlist[clientname].get('Matter Code'))

但是,我收到的输出如下:

In: matter_codes_only
Out: ['3569', '3569']

出于某种原因,我的循环复制了一个值,而忽略了另一个值(即“ 0095”)。我在这里想念什么有什么想法吗?非常欢迎提出更有效的方式来达到我期望的结果的建议!

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试使用列表理解:

>>> d = {'hong kong co.': {'Client Code': '897', 'Matter Code': '0095', 'Matter Name': 'Incorporation of Brazilian Subsidiary'}, 'shanghai co.': {'Client Code': '965', 'Matter Code': '3569', 'Matter Name': 'Corporate Matters'}}
>>> [v['Matter Code'] for v in d.values()]
['0095', '3569']

答案 1 :(得分:0)

使用:

In [1]: d = {'hong kong co.': {'Client Code': '897', 'Matter Code': '0095', 'Matter Name': 'Incorporation of Brazilian
   ...: Subsidiary'}, 'shanghai co.': {'Client Code': '965', 'Matter Code': '3569', 'Matter Name': 'Corporate Matters'}
   ...: }

In [2]: l = []

In [9]: for v in d.values():
   ...:     for key,val in v.items():
   ...:         if 'Matter Code' in key:
   ...:             l.append(v[key])
   ...:
   ...:

In [10]: l
Out[10]: ['0095', '3569']

说明d的字典值也再次是字典。因此,我们在字典中寻找键“ Matter Code”,并将其值附加到空列表l