【发布时间】:2018-04-13 16:47:44
【问题描述】:
也许dict 不打算以这种方式使用,但我需要为同一个键添加多个值。我的意图是使用一种暂时的属性。如果我的字典是A:B 和B:C,那么我想要字典A:[B,C]。
让我们举个例子来更好地解释我想做的事情:
numDict={'60':['4869'], '4869':['629'], '13':['2']}
我希望它返回:
{'60':['4869','629'], '13':['2']}
对于两个元素,可以这样使用:
result={}
for key in numDict.keys():
if [key] in numDict.values():
result[list(numDict.keys())[list(numDict.values()).index([key])]]=[key]+numDict[key]
但是如果我有更多元素呢?例如:
numDict={'60':['4869'], '4869':['629'], '13':['2'], '629':['427'}
我该怎么做才能获得退回{'60':[4869,629,427'], '13':['2']}?
【问题讨论】:
-
那么到底是什么问题呢?你试过什么?
-
我真的不认为这会很容易。字典在 python 中没有顺序,因此无法知道键是否在链的顶部。
-
听起来你想要传递闭包,除了你还想在之后删除“中间”条目。您想如何处理循环引用,例如
{1:[2], 2:[1]}?或者您确定不会发生循环? -
MaorVeitsman 问题在于,如果有两个以上的元素,它就无法使用该代码,而且我不知道如何继续。 cᴏʟᴅsᴘᴇᴇᴅ 是的,我知道,但是哪种类型会更好? TomKarzes 我很确定不会有那些循环引用。
-
查找“传递闭包”,并在其后使用 post-pass 删除每个具有前驱的节点(但请注意,您将在此过程中删除循环)。
标签: python dictionary get key