2017-09-27 67 views
1

我知道我的问题可以使用简单的迭代来解决,但我是Python新手,想知道是否有'惯用'或标准语言构造解决方案。在词典中搜索元组作为未知部分的键

所以问题是,我有字典是这样的:

mydict = { 
(1,2) : 111, 
(2,3) : 222, 
(xxx, yyy) : zzz, 
(xxx, qqq) : www, 
.... 

这是一本字典至极包括关键的元组指向值 如何搜索的元组像(xxx, *)如果我只需要(xxx, yyy)(xxx, qqq)双? mydict[(xxx, *)]还有其他类似的东西吗?

感谢您的帮助!

+3

你可以使用列表理解:'[k for k in mydict if k [0] == xxx]'。 –

+1

没有迭代就没有办法做到这一点。 –

回答

1

这里没有直接的语言构造。你必须使用一个使用列表理解选择键(或价值),其中2元组(x, y)的第一个元素是x:由它分解了一步,分组

lst = [v for (k1, _), v in mydict.items() if k1 == x] 
+0

太棒了!正是我期待的! –

0

你可以这样做所有xxx,???一起在词典的同一级别,而不是你的元组方法的键。

mydict = { 
1: {2 : 111}, 
2: {3 : 222}, 
xxx { yyy : zzz, 
     qqq : www}, 
.... 

这种让你来,你想在同一地点的,因为mydict[xxx] = { yyy : zzz, qqq : www},你可以采取更进一步,做mydict[xxx].values()让你一个数组mydict[xxx].values = [zzz, www],包含xxx值的数组在关键。