找出python中多维数组中是否存在元素

找出python中多维数组中是否存在元素,python,arrays,multidimensional-array,Python,Arrays,Multidimensional Array,我正在解析一个包含昵称和主机名的日志。我希望最终得到一个包含主机名和最新使用的昵称的数组 我有以下代码,它只在主机名上创建一个列表: hostnames = [] # while(parsing): # nick = nick_on_current_line # host = host_on_current_line if host in hostnames: # Hostname is already present. pass else: # Hos

我正在解析一个包含昵称和主机名的日志。我希望最终得到一个包含主机名和最新使用的昵称的数组

我有以下代码,它只在主机名上创建一个列表:

hostnames = []

# while(parsing):
#    nick = nick_on_current_line
#    host = host_on_current_line 

if host in hostnames:
    # Hostname is already present.
    pass
else:
    # Hostname is not present
    hostnames.append(host)

print hostnames
# ['foo@google.com', 'bar@hotmail.com', 'hi@to.you']
我想,如果能以以下几点作为结尾,那就太好了:

# [['foo@google.com', 'John'], ['bar@hotmail.com', 'Mary'], ['hi@to.you', 'Joe']]
我的问题是找出这样一个列表中是否存在主机名

hostnames = []

# while(parsing):
#    nick = nick_on_current_line
#    host = host_on_current_line   

if host in hostnames[0]: # This doesn't work.
    # Hostname is already present.
    # Somehow check if the nick stored together 
    # with the hostname is the latest one
else:
    # Hostname is not present
    hostnames.append([host, nick])
有没有简单的解决方法,或者我应该尝试不同的方法?我总是可以有一个带有对象或结构的数组(如果python中有这样的东西的话),但是我更喜欢解决我的数组问题

if host in zip(*hostnames)[0]:


使用列表而不是列表。使用主机名作为键,用户名作为值。

只需使用字典即可

names = {}

while(parsing):
    nick = nick_on_current_line
    host = host_on_current_line   

    names[host] = nick

一份口述可以满足你的所有需要。对同一主机的重复更新只会保留最后一个值,访问dict.items()将返回主机->尼克项数组。测试集合或dict中的成员资格比在列表中测试更具可伸缩性,尤其是对于像主机名字符串这样的可散列项目。哇。比我想象的容易多了。谢谢
names = {}

while(parsing):
    nick = nick_on_current_line
    host = host_on_current_line   

    names[host] = nick