【发布时间】:2020-12-01 08:29:28
【问题描述】:
我想根据另一个字典的键创建一个字典。 这是我使用的代码:
dic2 = {}
dic1 = {'k1':'v1', 'k2':'v2', 'k3':'v3'}
for i in dic1.keys():
for j in dic1.keys():
print (i,j)
dic2[i]=j
print (dic2)
输出:
k1 k1
k1 k2
k1 k3
k2 k1
k2 k2
k2 k3
k3 k1
k3 k2
k3 k3
{'k1': 'k3', 'k2': 'k3', 'k3': 'k3'}
为什么所有词条都没有加入字典?
为什么我们没有:
dic2 ={'k1':'k1','k1':'k2','k1':'k3','k2':'k1','k2':'k2','k2':'k3','k3':'k1','k3':'k2','k3':'k3'}
而是:
dic2 = {'k1': 'k3', 'k2': 'k3', 'k3': 'k3'}
【问题讨论】:
-
字典必须包含一个
set的唯一键。这是因为键被散列并用于查找值。您可能会受益于使用defaultdict(list),您可以在其中拥有一个指向值列表的键。 -
@patalvali,因为 JacobIRR 键是唯一的,所以您看到的是分配给每个键的最后一个值。
-
除了你的脚本,试着输入
dic2 ={'k1':'k1','k1':'k2','k1':'k3','k2':'k1','k2':'k2','k2':'k3','k3':'k1','k3':'k2','k3':'k3'},然后输入print(dic2),看看你会得到什么...... -
感谢您的 cmets。说得通。一件事我还是不明白。为什么保留最新的条目?保留第一个似乎更合乎逻辑(因为其他可能被视为重复键)。不 ?另一点:这个问题可能与另一个问题重复,但肯定不会与提到的问题重复。 (2个非常不同的问题恕我直言)
标签: python dictionary