假设我有一个带有值的 defaultdict:
x = defaultdict(int)
x[a,1] = 1
x[a,2] = 2
x[a,3] = 3
x[b,1] = 4
x[b,2] = 5
x[b,3] = 6
x[c,1] = 7
x[c,2] = 8
x[c,3] = 9
如何仅访问第一个索引为 c 的元素
或者更确切地说,我该如何实现这样的事情:
for key2 in x[,c]:
print key2
假设我有一个带有值的 defaultdict:
x = defaultdict(int)
x[a,1] = 1
x[a,2] = 2
x[a,3] = 3
x[b,1] = 4
x[b,2] = 5
x[b,3] = 6
x[c,1] = 7
x[c,2] = 8
x[c,3] = 9
如何仅访问第一个索引为 c 的元素
或者更确切地说,我该如何实现这样的事情:
for key2 in x[,c]:
print key2
默认字典和普通字典一样,在键上没有任何特殊的切片行为。键只是对象,在您的情况下它们只是元组。dict 不知道或强制执行有关键的内部结构的任何事情。(例如,可能有不同长度的不同密钥。)得到你想要的最简单的方法是:
for key in x.keys():
if key[0] == 'c':
print key, x[key]
另一种可能性是使用 defaultdicts 的 defaultdict,并访问像x['c'][1]
.
您还可以使用以下内容,这在我的计算机上会更快一些:另外,我不知道您的用例,但您选择的数据结构并不是特别有效的查询。
for i,e in x:
if i=='c':
print (i,e),x[(i,e)]
测试:
def func1():
for key in x.keys():
if key[0] =='c':
return key, x[key]
def func2():
for i,e in x:
if i=='c':
return (i,e),x[(i,e)]
timeit func1()
100000 loops, best of 3: 1.9 us per loop
timeit func2()
1000000 loops, best of 3: 1.56 us per loop