Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用元组作为导数来构造结构或层次结构?_Python_String_List_Data Structures_Hierarchy - Fatal编程技术网

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

我想在Python中创建一个结构或相关的层次结构,例如:将名称
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']