将Python列表附加到字典

时间:2018-01-20 08:59:56

标签: python list dictionary

我试图查找列表中是否存在标记,然后将它们映射到字典并将它们添加到相应的标记中。 这就是我想出来的。

RequiredTags = ['PolicyNumber', 'PaymentAmt', 'PolicyAmt']
ListOfTags = ['Header', 'Version','PolicyNumber', 'PaymentAmt', 'Body', 'PolicyAmt']
ListOfValues = ['', '1.1', '123456', '100.00', '', '1']

values = dict.fromkeys(RequiredTags, [])
for key, value in values.items():
    if key in ListOfTags:
        v = ListOfValues[ListOfTags.index(key)]
        print(key, v)
        values[key].append(v)

问题是,每次附加一个值时,它都会附加到字典中的每个键上,而不仅仅是我想要追加的那个键。

预期输出就像

values = {'PolicyNumber': ['123456'], 'PaymentAmt': ['100.00'], 'PolicyAmt': ['1']}

我有一个xml文件列表,我想从中提取和导出值。

这会将值添加到一个文件的dict中,但我想将所有XML文件中的值附加到这个字典中。 希望这能更好地澄清这个问题。

1 个答案:

答案 0 :(得分:3)

您的问题似乎没有多大意义,但我推断的是所需的输出应该与所需标签的列表相对应。

values = dict.fromkeys(RequiredTags)
for i, tag in enumerate(ListOfTags):
    if tag in RequiredTags:
        values[tag] = ListOfValues[i]

返回以下内容:

{'PaymentAmt': '100.00', 'PolicyAmt': '1', 'PolicyNumber': '123456'}

希望这是你想要的。

修改

所以,这就是我想你想要的:

values = {}
for i, tag in enumerate(ListOfTags):
    if tag in RequiredTags:
        values.setdefault(tag, []).append(ListOfValues[i])

在最后一行中,如果密钥存在于dict中,则它会附加到值列表,否则会使用空数组初始化该值。