我正在尝试在python dict中编写具有多个键和值的代码。例如,我的dict将如下所示:
d={"p1": {"d1":{"python":14,"Programming":15}}, "p2": {"d1":{"python":14,"Programming":15}} }
这里我有一个方法,如果某个特定值不存在,则填充字典。 代码如下所示:
Unable to add Value to python dictionary and write to a file
我修改了我的函数以接受1个参数。例如,我的参数是
在这种情况下如何更新字典?
我试过了:
FunDictr(d1)
#say the calling function passed 'foo'
#means d1 = foo
with io.open("fileo.txt", "r", encoding="utf-8") as filei:
d = dict()
for line in filei:
words = line.strip().split()
for word in words:
if word in d:
d[d1][word] += 1
else:
d[d1][word] = 1
我期待看到{" foo":{" d1":{" python":14}}
当我写这篇文章时,我收到错误:
d[d1][word] += 1
TypeError: string indices must be integers, not dict
答案 0 :(得分:1)
根据您提供的样本,看起来您正在寻找类似这样的东西。
def FunDictr(base_dictionary,string_key):
d = dict()
d[string_key] = dict()
d[string_key]["d1"] = dict()
with io.open("fileo.txt", "r", encoding="utf-8") as filei:
for line in filei:
words = line.strip().split()
for word in words:
if word in d[string_key]["d1"]:
d[string_key]["d1"][word] += 1
else:
d[string_key]["d1"][word] = 1
这将接受一个初始字典,使用传递给该函数的键添加一个新项,使用字符串d1的键创建一个嵌套字典作为该键的值,然后在其中创建一个包含该字符串的字典中的另一个字典字数。
出于好奇,额外的嵌套层的目的是什么?为什么不拍。
{'富' {'蟒':14}}
另外,我强烈建议使用更多描述性变量名称。它让生活更轻松:)