当前位置: 首页 > 知识库问答 >
问题:

在python中从一个字典到另一个字典的迭代

程毅
2023-03-14

我有两本字典Dict1和DICT2。Dict1中每个键的值如下所示:

Dict1 = { D1:[ C1, C2], D2: [C1], D3: [C2, C3], D4: [C3]}

但是Dict2由键组成,这些键是DICT1中的值。DICT2中的值是由元组组成的列表,如下所示。

Dict2 = { C1: [ (W1, 1 ), (W2, 5),  (W3, 4) ], C2: [ (W3, 2), (W4, 6) ,  (W5, 7) ],  C3:[ (W6,0),( W1,4), ( W2, 8)], C4: [(W7,3 ),(W8, 8)])
Dict3= { D1: [W1, W2, W3, W4, W5], D2:[W1, W2, W3], D3:[W3, W4, W5, W6, W1, W2 ] }
        Dict1 = { 'D1':[ 'C1', 'C2'], 'D2': ['C1'], 'D3': ['C2', 'C3'], 'D4': ['C3']}

        Dict2 = { 'C1': [ ('W1', 1 ), ('W2', 5),  ('W3', 4) ], 'C2': [ ('W3', 2), ('W4', 6) ,  ('W5', 7) ],  'C3':[ ('W6',0),( 'W1',4), ( 'W2', 8)], 'C4': [('W7',3 ),('W8', 8)]}


        for d, c_list in Dict1.items():
            for c in c_list:
                for cw, w_tup_list in Dict2.items():
                    if (c == cw):
                        w_list = []
                        for w_tup in w_tup_list:
                           w_list.append(w_tup[0])
                        print (d, w_list)

我得到的当前输出是

D1 ['W1', 'W2', 'W3']
D1 ['W3', 'W4', 'W5']
D2 ['W1', 'W2', 'W3']
D3 ['W3', 'W4', 'W5']
D3 ['W6', 'W1', 'W2']
D4 ['W6', 'W1', 'W2']

我想要的输出应该是字典式的:

    Dict3 = { 'D1':['W1', 'W2', 'W3', 'W4', 'W5'], 'D2': ['W1', 'W2', 'W3'], 'D3': ['W3', 'W4', 'W5', 'W6', 'W1', 'W2' ], 'D4': ['W6', 'W1', 'W2']}

共有1个答案

祁烨
2023-03-14

dict2获取项不需要循环。只需使用dict2[c]

Dict1 = { 'D1':[ 'C1', 'C2'], 'D2': ['C1'], 'D3': ['C2', 'C3'], 'D4': ['C3']}
Dict2 = { 'C1': [ ('W1', 1 ), ('W2', 5),  ('W3', 4) ], 'C2': [ ('W3', 2), ('W4', 6) ,  ('W5', 7) ],  'C3':[ ('W6',0),( 'W1',4), ( 'W2', 8)], 'C4': [('W7',3 ),('W8', 8)]}
Dict3 = {}

for d, c_list in Dict1.items():
    for c in c_list:
        w = [item[0] for item in Dict2[c]]
        Dict3[d] = Dict3.get(d, []) + w

print(Dict3)
 类似资料:
  • 问题内容: 我正在尝试编写一个自定义过滤器方法,该方法接受任意数量的 kwargs 并返回一个列表,该列表包含包含这些 kwargs 的类似数据库的列表的元素。 例如,假设和=相同。结果为True。但是,假设=同一件事,再加上其他事情。我的方法需要能够确定 d1是否在d2中 ,但是Python无法使用字典来做到这一点。 内容: 我有一个字类,并且每个对象都有类似的属性,,,等等。我希望能够在这些单

  • 问题内容: Swift中的数组支持+ =运算符,可将一个数组的内容添加到另一个数组。有没有简单的方法可以做到这一点的字典? 例如: 问题答案: 您可以为定义运算符,例如

  • 假设我有以下两本词典: 我想检查dict1是否是dict2的子集(即dict 1中的键值对是否显示在dict2中,而dict2中的相同键值将包括额外的值,如充电状态和设备)。 但我知道 请注意,这是一个不同的问题: 遍历所有嵌套字典值? 对嵌套字典的嵌套值求和 循环访问嵌套字典 有人能帮忙吗? 提前致谢。

  • 问题内容: 在Python上进行迭代时从字典中删除项目是否合法? 例如: 这个想法是从字典中删除不满足特定条件的元素,而不是创建一个新字典,该字典是正在迭代的字典的子集。 这是一个好的解决方案吗?有没有更优雅/更有效的方法? 问题答案: 此答案不适用于,并且会给出。 :字典在迭代过程中更改了大小。 发生这种情况是因为返回的是迭代器而不是列表。正如评论中指出的那样,只需将其转换为列表即可,它应该可以

  • 问题内容: 我是python的新手,我列出了每年的年份和值。我想做的就是检查字典中是否已经存在年份,如果存在,则将值附加到特定键的值列表中。 举例来说,我有一个年份列表,每年都有一个值: 我想做的是用年作为键填充那些字典,而那些数字作为值填充字典。但是,如果我两次列出了2009,那么我想将该第二个值附加到该词典中的值列表中,因此我想: 现在,我有以下内容: 问题答案: 如果我可以重新表述你的问题,

  • 问题内容: 我正在研究一个反向索引的搜索程序。索引本身是一个字典,其键是术语,其值本身是短文档的字典,ID号是键,其文本内容是值。 为了对两个词执行“与”搜索,因此我需要与他们的发布列表(字典)相交。在Python中有什么明确的方法(不一定太聪明)?我首先尝试了以下方法: 问题答案: 在Python中,您可以使用运算符来计算集合的交集,而字典键是类似于集合的对象(在Python 3中): 在Pyt