为一组中的每个元素打印字典的相应键

时间:2014-09-23 00:35:01

标签: python dictionary format set key-value

我构建一个字典(d),看起来像这样:

d = {'compartment 1': ['500002', '500012', '305667'],
     'compartment2': ['500002', '500012', '305667', '500010', '500038', '311984'],
     'complex': ['310698', '500072', '308090']}

我还构建了一组与dict键相对应的唯一元素(例如' 500002'),我确信该集合的每个元素至少匹配一次字典中的值,但是可能它有两个,三个......相应的键。

我现在想要的是在一行中为每个唯一元素打印出所有相应的值。

这就是我提出的:

for u in uniqueset:
    for x, y in d.iteritems():
        for number in y:
            if y == u:
                print u, x

结果是它在不同的行上多次打印每个唯一的项目。我希望它只在一行打印一次,然后是所有对应的键。我以为我可以用嵌套的for循环来做,但也许这不是解决问题的方法。

我怎么能这样做? - 希望我清楚.. 谢谢。

1 个答案:

答案 0 :(得分:1)

你可以使用像这样的列表理解

>>> [key for key in d if '500002' in d[key]]
['compartment 1', 'compartment2']

如果你有一套,并且想要找到每个项目的每个键(如果我理解你的问题),你可以这样做

s = set(['308090', '500012', '500072', '305667', '311984', '500010', '500002', '500038', '310698'])

for item in s:
    print item, [key for key in d if item in d[key]]

输出

308090 ['complex']
310698 ['complex']
311984 ['compartment2']
500038 ['compartment2']
500072 ['complex']
305667 ['compartment 1', 'compartment2']
500012 ['compartment 1', 'compartment2']
500010 ['compartment2']
500002 ['compartment 1', 'compartment2']

使用for循环你更舒服,你可以做这样的事情

for item in s:
    keyList = []
    for key in d:
        if item in d[key]:
            keyList.append(key)
    print item, keyList