【发布时间】:2021-01-28 00:25:42
【问题描述】:
我有两个字典 (dict1, dict2) 有 100 个相同的键,但不同的元组列表作为值:
dict1 = {'M1': [(50, 'M'), (4, 'K')], 'N2': [(500, 'N'), (3, 'C'), ( 7, 'K')], 'S3': ...}
dict2 = {'M1': [(46, 'M'), (2, 'K'), (11, 'F')], 'N2': [(400, 'N'), ( 5, 'C')], 'S3': ...}
我想创建一个新字典 (dict3),如果它们在元组的第一个位置具有相同的字母,则在其中添加值,如果不是,则必须将元组添加到新字典的值中:
dict3 = {'M1': [(96, 'M'), (6, 'K'), (11, 'F')], 'N2': [(900, 'N'), ( 8, 'C'), (7, 'K)], 'S3': ...}
我正在考虑用 python3 做类似的事情(这段代码不起作用):
dict1 = {'M1': [(50, 'M'), (4, 'K')], 'N2': [(500, 'N'), (3, 'C'), (7, 'K')]}
dict2 = {'M1': [(46, 'M'), (2, 'K'), (11, 'F')], 'N2': [(400, 'N'), (5, 'C')]}
dict3 = {}
for (val1, key1), (val2, key2) in zip(dict1, dict2):
if t1[1]==t2[1] for (t1, t2) in (key1, key2):
t3_0 = t1[0] + t2[0]
t3_1 = t1[1]
elif t1[1] not in t2[1]:
t3_0 = t1[0]
t3_1 = t1[1]
elif t2[1] not in t1[1]
t3_0 = t2[0]
t3_1 = t2[1]
key3 = [(t3_0, t3_1)]
# here val1=val2
dict3[val1] = key3
非常感谢您的帮助。 谢谢。
【问题讨论】:
-
“此代码不起作用” - 这不是问题描述。 究竟如何它不起作用?顺便说一句,
zip(dict1, dict2)将遍历每个字典的 keys,它们是 strings,因此不能用(val1, key1)解包。 -
如果您可以将内部值重新组织为字典列表而不是元组列表(以字母为键),您可以大大提高时间复杂度
标签: python list dictionary tuples key-value