【发布时间】:2021-06-17 06:57:52
【问题描述】:
我有一个嵌套列表,我想将列表项与字典键进行比较,如果找到匹配项,则应将相应的字典值相加并附加到与新键值对相同的字典中。
l1 = [['a','b'], ['c','d']]
dict1 = {'a':10, 'e':20, 'c':30, 'b':40}
预期结果:
dict1 = {'a':10, 'e':20, 'c':30, 'b':40, 'a+b':50, 'a+c':40, 'b+c':70}
到目前为止我做了什么:
for x in range(len(l1)):
for y in range(len(l1[x])):
for k in dict1.keys():
if k == l1[x][y]:
dict1.append(dict1[k])
有没有办法在不使用嵌套 for 循环的情况下做到这一点? PS:代码还没写完。
【问题讨论】:
-
为什么这是您的预期输出?为什么没有,例如
c+d? -
@tomjn 因为字典键中不存在列表项“d”..
-
对不起,我是愚蠢的,这是有道理的。冒着另一个愚蠢问题的风险,
l1中的子列表有什么特殊含义吗? -
您的 l1 似乎错误,嵌套方面无关紧要。我们是否只是应该从 l1 的所有(扁平)元素中获取每个有效的(1-)或 2-元素排列?并忽略像“d”这样的无效键?
-
原始代码 l1 中的 @smci 被其他一些逻辑附加,子列表有自己的含义。子列表正在其他代码部分中使用。这个想法是比较子列出带有字典键的项目,如果找到匹配项,则添加相应的字典值并附加到同一个字典中(不忽略子列表中不可用的键)我希望现在很清楚
标签: python