【发布时间】:2021-02-07 00:00:09
【问题描述】:
我有两个字典 Dict1 和 Dict2。 Dict1 中每个键的值如下所示:
Dict1 = { D1:[ C1, C2], D2: [C1], D3: [C2, C3], D4: [C3]}
但 Dict2 由来自 Dict1 的值的键组成。 Dict 2 中的值是由元组组成的列表,如下所示。
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)])
我有兴趣创建由 Dict1 中的键组成的 Dict3,其值来自列表中元组的第一个元素,这些元素是 Dict2 中的值,如下所示。您可以忽略元组的第二个元素。
例如,C1 有 [W1, W2, W3] 作为第一个元素,C2 有 [W3, W4, W5] 作为第一个元素。 由于 Dict1 中的 D1 是 D1: [C1, C2],我想将 C1 和 C2 的列表合并为 [W1, W2, W3, W4, W5]。
所以最终期望的输出是:
Dict3= { D1: [W1, W2, W3, W4, W5], D2:[W1, W2, W3], D3:[W3, W4, W5, W6, W1, W2 ] }
如何从 Dict1 和 Dict2 获得 Dict 3?
这是我的代码:
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']}
【问题讨论】:
-
这是一个重新发布,因为我因为格式问题删除了旧问题。
标签: python list dictionary tuples