我有一些函数可以创建两个单独的,排序的词典。 例子:
Dictionary_A
('a', 0.55)
(' ', 0.088)
('o', 0.088)
('>', 0.055)
('4', 0.055)
Dictionary_B
('c', 0.021)
('h', 0.031)
('u', 0.031)
('8', 0.024)
('y', 0.054)
为了进行一些加密测试,我需要创建第三个字典,其中Dictionary_A中的第一个键映射到Dictionary_B中的第一个键,依此类推。唯一需要注意的是,Dictionary_A中的字符可能会映射到Dictionary_B中的多个字符,但Dictionary_A中的两个不同字符可能无法映射到Dictionary_B中的相同字符。
Dictionary_C,从这些例子中可以看出:
{'a':'c', ' ':'h', 'o':'u', '>':'8', '4':'y'}
非常感谢任何帮助!
答案 0 :(得分:1)
现在您的数据看起来像元组列表,而不是字典。在有效的python语法中,这将是:
class Person(Animal):
def __init__(self, name):
super().__init__(name, True)
然后可以创建一个字典,其中list_a = [('a', 0.55),
(' ', 0.088),
('o', 0.088),
('>', 0.055),
('4', 0.055)]
list_b = [('c', 0.021),
('h', 0.031),
('u', 0.031),
('8', 0.024),
('y', 0.054)]
的第一个元素映射到list_a
的第一个元素,如下所示:
list_b
返回:
{k[0]:v[0] for k,v in zip(list_a, list_b)}
答案 1 :(得分:0)
假设键具有您喜欢的自然顺序,您可以执行类似
的操作dict(zip(sorted(dict_a.keys()), sorted(dict_b.keys()))))
或者如果您假设OrderedDict,您可以在不使用sorted
你的约束对我来说没有多大意义,因为键不能在dict中重复。
答案 2 :(得分:0)
此答案适合于注释" Dictionary_A中的字符可能映射到Dictionary_B中的多个字符,但Dictionary_A中的两个不同字符可能无法映射到Dictionary_B中的相同字符。"在其他答案中忽略了这一点,因为字典中有两个相同的键是没有意义的。
听起来您可以访问或轻松获取两个键序列。如果是这样,那么您可以使用zip
和defaultdict
来构建从A中的键到B中键列表的映射。
from collections import defaultdict
keys_a = ['a', 'b', 'c', 'a']
keys_b = ['1', '2', '3', '4']
key_mapping = defaultdict(list)
for key_a, key_b in zip(keys_a, keys_b):
key_mapping[key_a].append(key_b)
# defaultdict(<type 'list'>, {'a': ['1', '4'], 'c': ['3'], 'b': ['2']})