将字典中的元组值(字符串)替换为对应于每个字符串的数字?

时间:2019-07-03 17:49:54

标签: python dictionary tuples key key-value-store

我有一个字典,看起来像这样,其中的值是字符串元组,对应于一些浮点数:

first_dict = {('item1', 'item2'): 3.6, ('item1', 'item3'): 7.0, ('item1', 'item4'): 1.3}

然后我有第二个字典,其中为每个项目(第一个字典中的元组的一部分)分配了一个数字:

second_dict = {'item1': 0, 'item2': 1, 'item3': 2, 'item4': 3, 'item5': 4}

现在我要做的是将first_dict中的元组替换为second_dict中的值(数字索引)。所以我应该结束:

final_dict = {(0, 1): 3.6, (0, 2): 7.0, (0, 3): 1.3}

这背后的想法是,可以在矩阵中以行/列的形式输入到达元组。

我知道元组是不可变的,因此我需要创建一个新的dict来执行此操作。最初,我以为我可以遍历first_dict中的元组,然后将它们匹配为second_dict,然后使用这些匹配项创建third_dict。但是,这似乎是不必要的,因为命令的全部目的是不必循环/迭代它们。

3 个答案:

答案 0 :(得分:1)

您可以使用字典理解:

first_dict = {('item1', 'item2'): 3.6, ('item1', 'item3'): 7.0, ('item1', 'item4'): 1.3}
second_dict = {'item1': 0, 'item2': 1, 'item3': 2, 'item4': 3, 'item5': 4}
final_dict = {tuple(second_dict[i] for i in a):b for a, b in first_dict.items()}

输出:

{(0, 1): 3.6, (0, 2): 7.0, (0, 3): 1.3}

答案 1 :(得分:0)

使用字典理解

例如:

first_dict = {('item1', 'item2'): 3.6, ('item1', 'item3'): 7.0, ('item1', 'item4'): 1.3}
second_dict = {'item1': 0, 'item2': 1, 'item3': 2, 'item4': 3, 'item5': 4}

final_dict = {(second_dict.get(k[0]), second_dict.get(k[1])) :v for k, v in first_dict.items() }
print(final_dict)

输出:

{(0, 1): 3.6, (0, 2): 7.0, (0, 3): 1.3}

答案 2 :(得分:0)

这里

final_dict = {(second_dict[k[0]], second_dict[k[1]]): v for k, v in first_dict.items()}
print(final_dict)

输出

{(0, 1): 3.6, (0, 2): 7.0, (0, 3): 1.3}