2024-09-26 17:36:01 发布
网友
使用Python,我创建了一个由元组索引的列表:
return values[(a, b)]
但是,有时我想传入(a, _),在那里我不关心b的值是多少,并接收所有可能索引的列表。你知道吗
(a, _)
b
例如:
values[(dog, _)] => returns [(dog, Mike), (dog, Sam), (dog, Edward)]
这在Python中是可能的吗?你知道吗
如果您有一个元组列表,那么您可以简单地从元组列表创建一个字典,并将第一个元素用作dict键,如下所示:
>>> import collections >>> l = [('a', 'foo'), ('a', 'bar'), ('b', 'hello')] >>> d = collections.defaultdict(list) >>> for k, v in l: ... d[k].append(v) ... >>> d defaultdict(<type 'list'>, {'a': ['foo', 'bar'], 'b': ['hello']}) >>> d['a'] ['foo', 'bar']
不能用元组键对字典进行部分索引。必须使用与插入数据相同的密钥来提取数据。你知道吗
但是,另一种方法是使用嵌套字典。也就是说,与使用单个元组(values[key1,key2])进行索引不同,您需要索引两次values[key1][key2]。如果只提供第一个键,则会得到一个包含数据的内部字典。你知道吗
values[key1,key2]
values[key1][key2]
举个例子:
>>> d = {1: {1: 2, 2: 3, 3: 4}, 2: {2: 1, 3: 2, 4: 3}} >>> d[1][1] 2 >>> d[1] {1: 2, 2: 3, 3: 4}
如果只需要其中一个内部字典的值,可以使用values方法获取:
values
>>> d[1].values() dict_values([2, 3, 4])
在python3中,dict.values返回一个“view”对象,它是iterable。如果您需要一个真正的列表,只需将values调用包装到list构造函数中即可(请注意,值的顺序是任意的):
dict.values
>>> list(d[1].values()) [2, 3, 4]
必须使用键的精确值来索引词典。你知道吗
要查找多个键,需要在它们上循环:
[k for k in my_dict if k[0] == dog]
如果您有一个元组列表,那么您可以简单地从元组列表创建一个字典,并将第一个元素用作dict键,如下所示:
不能用元组键对字典进行部分索引。必须使用与插入数据相同的密钥来提取数据。你知道吗
但是,另一种方法是使用嵌套字典。也就是说,与使用单个元组(
values[key1,key2]
)进行索引不同,您需要索引两次values[key1][key2]
。如果只提供第一个键,则会得到一个包含数据的内部字典。你知道吗举个例子:
如果只需要其中一个内部字典的值,可以使用
values
方法获取:在python3中,
dict.values
返回一个“view”对象,它是iterable。如果您需要一个真正的列表,只需将values
调用包装到list构造函数中即可(请注意,值的顺序是任意的):必须使用键的精确值来索引词典。你知道吗
要查找多个键,需要在它们上循环:
相关问题 更多 >
编程相关推荐