【发布时间】:2018-11-06 11:42:27
【问题描述】:
这个查询是我上一个问题的后续:Creating Dictionaries from Lists inside of Dictionaries
这让我产生了:
primaryDict = {'list_a':[{'apple':0}, {'orange':0}], 'list_b':[{'car':0}, {'bus':0}]}
为了便于处理,我将其更改为以下内容:
primaryDict = {'a': {'car': 0, 'bus': 0}, 'b': {'apple': 0, 'orange': 0}}
所以我这次遇到的问题是,我需要在给定一组条件的情况下更新嵌套列表中每次出现的字符串的数值,即:
-
在单独的子列表列表中,例如:
objList = [['car', 'bus', 'train', 'apple', 'b'], ['apple', 'car', 'bike', 'a', 'b']]
其中嵌套了字符串列表,这些是我将在其中检查字符串是否出现的子列表。
- 为了使计数器上升,键的对应字符串也必须出现在同一个列表中。因此,只有在字符串 'a' 以及 'a':{} 中的目标字符串值都存在时,'a':{} 中的计数器才会增加。
所以 primaryDict['a'] 和 primaryDict['b'] 的结果值应该是:
{'car':1, 'bus':0}, {'apple':2, 'orange':0}
因为 'car' 出现在列表中,带有 'a',而 'bus' 没有。
我试图解决这个问题的尝试是一堆循环,如果类似于:
for k, v in primaryDict.items():
for key in primaryDict:
for sublist in objList:
if key in sublist:
for word in v:
if word in sublist:
primaryDict[key][v] = v.get(key, 0) + 1
这看起来非常恶心,不起作用,清楚地表明我对索引缺乏了解。
我的各种尝试中的错误主要由 typeErrors 组成,其中我引用的字典显然是字符串,这意味着我引用的是列表中的键或值,而不是嵌套字典中的值。
目标:我要编写一个函数,在给定条件(primaryDict 的键和子列表中存在的嵌套字典)的情况下,循环并更新嵌套字典中的数值。我正在尝试不生成新字典,并且我正在尝试不依赖导入的模块,因为我对它们缺乏了解,这可能会在未来再次绊倒我。
请告知我应该如何修复我的代码,以及如果我希望将数字用于将来的计算和比较,我应该如何正确索引数值。
谢谢
【问题讨论】:
-
您能在这里解释一下您的要求吗:
how I should index the numeric value properly if I wish to use the number for future calculations and comparisons? -
@andrew_reece 我想我现在明白了如何做到这一点,因为我可以正确识别哪个是字符串,哪个实际上是字典。谢谢。
标签: python python-3.x dictionary indexing word-count