我有一本字典:
d = {'a': ['Thing', 'City', 10], 'b': ['Thing' ,'City', 5]}
等等和num = 10
我想浏览字典并检查num是否与字典列表中的任何其他数字匹配。如果是这样,我想在数字前抓取2个元素并返回所有3.
例如,在这种情况下,由于num = 10
和a
有10
,因此应该返回['Thing', 'City' 10]
。
到目前为止,我有这个:
for i in d.keys(): # goes through the dictionary
for item in d[i]:
if type(item) == int: # if the item is an int
if num = item:
l.append(item)
#l.append the items before it
我想我的问题归结为:我如何在列表中的给定元素之前获取项目?所以在这种情况下,我有10个但也想要东西和城市。
谢谢!
答案 0 :(得分:2)
尝试这样的事情:
for key, item in d.items():
for idx, subitem in enumerate(item):
if isinstance(subitem, int) and subitem == num:
l.extend(subitem[idx-2:idx+1])
答案 1 :(得分:2)
简单地使用in
关键字。
def get_list(num, d):
for lst in d.values():
if num in lst:
return(lst) #or do whatever you want with the list
示例:
d = {'a': ['Thing', 'City', 10], 'b': ['Thing' ,'City', 5]}
get_list(10, d)
>>> ['Thing', 'City', 10]
get_list(5,d)
>>> ['Thing', 'City', 5]
答案 2 :(得分:0)
如果只是要比较d
的值的最后一个元素,并且可能会出现多次......(虽然这不会进行隐式类型检查)...
matching = [k for k,v in d.iteritems() if v[-1] == 10]
for k in matching:
print k, d[k]
答案 3 :(得分:0)
result = [v for v in d.itervalues() if v[2] == num]