python - 查找键/将多个值附加到字典中的键时出现问题(python)

标签 python dictionary

我正在尝试制作一个字典,将值保存到键中,如果键已经存在,则该值将附加到键中以创建值列表。我使用的是 python 3,因此 dict.has_key 方法已弃用,有人可以指出我正确的方向吗?

二进制.txt:

N = N D
N = D
D = 0
D = 1



import sys
import string

#default length of 3
stringLength = 3

#get last argument of command line(file)
filename1 = sys.argv[-1]


#get a length from user
try:
    stringLength = int(input('Length? '))
    filename = input('Filename: ')
except ValueError:
    print("Not a number")

#checks
print(stringLength)
print(filename)

def str2dict(filename="Binary.txt"):
    result = {}
    with open(filename, "r") as grammar:
        #read file 
        lines = grammar.readlines()
        count = 0
        #loop through
        for line in lines:
            #append info 
            print(line)
            line = line.rstrip('\n')

            if line[0] in result:
                result[line[0]].append(line.split('=')[1])

            else: 

                result[line[0]] = line.split('=')[1]
            print (result)
    return result

print (str2dict("Binary.txt"))

最佳答案

使用defaultdict ,如果键存在,我们追加该项目,如果不存在,我们将创建该键,然后追加该项目:

from collections import defaultdict

d = defaultdict(list)

d[key].append(item)

在您的代码中:

result = defaultdict(list)

然后简单地:

 result[line[0]].append(line.split('=')[1])

无需检查 key 是否存在。

关于python - 查找键/将多个值附加到字典中的键时出现问题(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28308488/

相关文章:

python - 是否可以将新的键/值添加到字典的开头而不是后面

Python 列表理解与数据框循环

python - 将 Perl 中的多维哈希转换为 Python 字典

python - 创建一个可以增量更新的高效的基于文件的索引

javascript - 在 Map 函数中生成字符串的多个条件

python - 如何创建一个列表来选择索引?

python - try-except 和 RuntimeWarning

Python 2.7 计算具有给定值的字典项的数量

python - 变量 who 的引用总是指向 len(dict)

python - 是否可以使用 Google BERT 来计算两个文本文档之间的相似度?