Python 如何用元组作为导数来构造结构或层次结构?
我想在Python中创建一个结构或相关的层次结构,例如:将名称Python 如何用元组作为导数来构造结构或层次结构?,python,string,list,data-structures,hierarchy,Python,String,List,Data Structures,Hierarchy,我想在Python中创建一个结构或相关的层次结构,例如:将名称xxxx附加到列表中,并在xxxx下存储多个“ID”?在搜索ID时,它将返回存储它的xxxx 为了更清楚地说明这一点,对于xxxx和yyyy: xxxx-|-112 yyyy-|-123 |- 113 |- 124 |- 114 |- 125 在搜索这些ID中的任何一个时,它将返回它所属的组,即如果我搜索114,它将返回它所属的yyy class Post: ID
xxxx
附加到列表中,并在xxxx
下存储多个“ID”?在搜索ID时,它将返回存储它的xxxx
为了更清楚地说明这一点,对于xxxx
和yyyy
:
xxxx-|-112 yyyy-|-123
|- 113 |- 124
|- 114 |- 125
在搜索这些ID中的任何一个时,它将返回它所属的组,即如果我搜索114
,它将返回它所属的yyy
class Post:
ID = []
incoming_data = ''
Buff = 0
IP = []
contact_info = ''
def Map(self, object):
object.contact_info = object.IP + object.ID
print object.contact_info
obj1 = Post()
obj1.incoming = '112113114115116'
obj1.IP.append('xxx.xxx.xxx.xxx')
for x in range(1,6): #seperates it into sets of 3 digit numbers.
obj1.ID.append(obj1.incoming_data[(3 * x) - 3: 3 * x])
obj1.Map(obj1) #Prints the concatenated value of the both the strings.
我已经到了这个地步,它把它作为一个字符串,但我应该使用元组吗?我是新来的,几个小时前我就开始了,非常感谢你的帮助。我想知道可能的方法
目前产出:
['xxx.xxx.xxx.xxx','112','113','114','115','116']
以下是关于字典的教程:您可以使用字典(类似于
c
中的哈希表)。请记住,字典提供对指定键的值的访问。因此,由于在您的情况下,它们之间的值(113114等)都不同,因此您可以将它们用作键,并通过它们在相应的名称(例如xxxx、yyyy等)中具有O(1)访问权限
更新
要为一个键存储多个值,可以使用列表
第一路
第二种方式(使用)
你是说元组。还有,我想你在找字典。@COLDSPEED我可以详细说明我如何在我的案例中使用它吗?
{'xxxx':[112113114],'yyyy':[123124125]}
ahahh..那么搜索可以通过迭代其他列表来完成吗?如果你想搜索,可以将ID保留在一个集合中(而不是一个列表中)用于不断查找。这个想法似乎不错,但我如何向它们添加值?@Jack更新了答案!这也是一个好主意。
IP = "xxx.xxx.xxx.xxx"
data = (112, 113, 114, 115, 116)
mydict = {}
mydict[IP] = data
print mydict
hunt = 114
if hunt in mydict[IP]:
print("{} is in {}".format(hunt, IP))
>>> d = {
... 112 : 'xxxx',
... 113 : 'xxxx',
... 114 : 'xxxx',
... 123 : 'yyyy',
... 124 : 'yyyy',
... 125 : 'yyyy',
... }
>>> print d[114]
xxxx
>>> d = {
... 112 : ['xxxx'],
... 113 : ['xxxx'],
... 114 : ['xxxx'],
... 123 : ['yyyy'],
... 124 : ['yyyy'],
... 125 : ['yyyy'],
... }
>>>
>>> d[114].append('zzzz')
>>> d.items()
[(112, ['xxxx']), (113, ['xxxx']), (114, ['xxxx', 'zzzz']), (123, ['yyyy']), (124, ['yyyy']), (125, ['yyyy'])]
>>> d[114]
['xxxx', 'zzzz']
>>> from collections import defaultdict
>>>
>>> l = [(114, 'xxxx'), (113, 'yyyy'), (123, 'xxxx'), (114, 'yyyy'), (125, 'xxxx')]
>>> d = defaultdict(list)
>>> for k, v in l: d[k].append(v)
...
>>> d.items()
[(113, ['yyyy']), (114, ['xxxx', 'yyyy']), (123, ['xxxx']), (125, ['xxxx'])]
>>> d[114]
['xxxx', 'yyyy']