如何在python中的不同字典中存储相同的键?

时间:2015-09-16 04:38:18

标签: python python-2.7 python-3.x

我有一个有值的文件

key1:value1
key2:value2
key1:value3
key2:value4

我想将密钥和值提取到字典d中,将重复的密钥和值提取到另一个字典中

d={'key1':value1,'key2':value2}e ={'key1':value3,'key2':value4}

这是我的代码,需要进行哪些修改?如果需要两个以上的词典,可以做些什么?

d={}
e={}
L=[]
with open('file1.txt', 'r') as searchfile:

    for line in searchfile:
        line = line.strip()
        words=line.split(':')
        if words[0] in line:
            d[words[0]]=(words[1]

L.append(d)

print L

3 个答案:

答案 0 :(得分:1)

d={}
dict_lst = [d]
with open('file1.txt', 'r') as searchfile:

    for line in searchfile:
        line = line.strip()
        words=line.split(':')
        for d in dict_lst:
            if not d.has_key(words[0]):
                d[words[0]] = words[1]
                break
        else:
            new_d = {}
            new_d[words[0]] = words[1]
            dict_lst.append(new_d)

答案 1 :(得分:0)

以下内容适用于任意数量的源文件,例如: input.txtinput2.txt

它还会保留重复项的计数,以防万一有多个副本,这意味着如果所有文件中有三个条目具有相同的密钥,则会显示该密钥的两个重复项:

import collections

d = {}
duplicates = {}
duplicate_counts = collections.Counter()

for input_file in ['input.txt', 'input2.txt']:
    with open(input_file, 'r') as f_input:
        for key_value in f_input:
            key, value = key_value.strip().split(':')
            if key in d:
                duplicates[key] = value
                duplicate_counts[key] += 1
            else:
                d[key] = value

print 'd:', d
print 'duplicates:', duplicates
print 'duplicate counts:', duplicate_counts

答案 2 :(得分:0)

这适用于任意数量的词典,并使用for-else语法。

  

在第一个套件中执行的break语句终止循环   不执行else子句的套件。

dicts = [{}]
with open('file.txt', 'r') as f:
    for line in f:
        key, value = line.strip().split(':')
        for d in dicts:
            if key not in d:
                d[key] = value
                break
        else:
            dicts.append({})
            dicts[-1][key] = value

print dicts

给定输入文件:

key1:value1
key2:value2
key1:value3
key2:value4
key1:value5
key3:value6

输出是:

[{'key3': 'value6', 'key2': 'value2', 'key1': 'value1'},
 {'key2': 'value4', 'key1': 'value3'},
 {'key1': 'value5'}]

请记住,词典是无序的,所以' key3'在第一个词典中处于第一位置并不意味着什么(并且这些位置将随着PYTHONHASHSEED的不同而变化。