我构建一个字典(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循环来做,但也许这不是解决问题的方法。
我怎么能这样做? - 希望我清楚.. 谢谢。
答案 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