Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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 - Fatal编程技术网

Python 基于字符串列表的元组顺序列表

Python 基于字符串列表的元组顺序列表,python,Python,我有两个列表顺序和数据顺序是指数据中元组列表的顺序 # two lists order = ['name', 'email', 'phone', 'zip'] data = [(email, <object>), ('zip', <object>), ('name', <object>), ('phone', <object>)] # what the result should be [('name', <object>), ('e

我有两个列表
顺序
数据
<代码>顺序是指数据中元组列表的顺序

# two lists
order = ['name', 'email', 'phone', 'zip']
data = [(email, <object>), ('zip', <object>), ('name', <object>), ('phone', <object>)]

# what the result should be
[('name', <object>), ('email', <object>), ('phone', <object>), ('zip', <object>)]
它只是按字母顺序排列


有什么好办法吗?

用字典作为中介怎么样

index = { t[0]: t for t in data }
result = [index[k] for k in order]

用字典作为中介怎么样

index = { t[0]: t for t in data }
result = [index[k] for k in order]

用字典作为中介怎么样

index = { t[0]: t for t in data }
result = [index[k] for k in order]

用字典作为中介怎么样

index = { t[0]: t for t in data }
result = [index[k] for k in order]

您可以将
order
转换为
dict

>>> data = [('email', None), ('zip', None), ('name', None), ('phone', None)]
>>> order = {'name':0, 'email':1, 'phone':2, 'zip':3}
>>> sorted(data, key=lambda item : order[item[0]])
[('name', None), ('email', None), ('phone', None), ('zip', None)]

您可以将
order
转换为
dict

>>> data = [('email', None), ('zip', None), ('name', None), ('phone', None)]
>>> order = {'name':0, 'email':1, 'phone':2, 'zip':3}
>>> sorted(data, key=lambda item : order[item[0]])
[('name', None), ('email', None), ('phone', None), ('zip', None)]

您可以将
order
转换为
dict

>>> data = [('email', None), ('zip', None), ('name', None), ('phone', None)]
>>> order = {'name':0, 'email':1, 'phone':2, 'zip':3}
>>> sorted(data, key=lambda item : order[item[0]])
[('name', None), ('email', None), ('phone', None), ('zip', None)]

您可以将
order
转换为
dict

>>> data = [('email', None), ('zip', None), ('name', None), ('phone', None)]
>>> order = {'name':0, 'email':1, 'phone':2, 'zip':3}
>>> sorted(data, key=lambda item : order[item[0]])
[('name', None), ('email', None), ('phone', None), ('zip', None)]

您只需根据数据元组的索引对其第一个元素进行排序,顺序如下:

order = ['name', 'email', 'phone', 'zip']
data = [("email", "<object>"), ('zip', "<object>"), ('name', "<object>"), ('phone', "<object>")]

print sorted(data,key=lambda x:order.index(x[0]))
[('name', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
order=['name','email','phone','zip']
数据=[(“电子邮件”,“邮政编码”,“姓名”,“电话”,“电话])]
打印排序(数据,键=lambda x:order.index(x[0]))
[('name','')('email','')('phone','')('zip','')]
您还可以就地排序:

data.sort(key=lambda x:order.index(x[0]))
print data
[('name', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
data.sort(key=lambda x:order.index(x[0]))
打印数据
[('name','')('email','')('phone','')('zip','')]
如果您有重复的元素,这也会起作用:

data = [("email", "<object>"),("email", "<object>"), ('zip', "<object>"), ('name', "<object>"), ('phone', "<object>"),('name', "<object>")]
data.sort(key=lambda x:order.index(x[0]))
print data
[('name', '<object>'), ('name', '<object>'), ('email', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
data=[(“电子邮件”,“电子邮件”,“电子邮件”,“邮政编码”,“姓名”,“电话”,“姓名”,“姓名],(“姓名”)]
data.sort(key=lambda x:order.index(x[0]))
打印数据
[('name','')('name','')('email','')('email','')('phone','')('zip','')]

您只需根据数据元组的索引按顺序对其第一个元素进行排序:

order = ['name', 'email', 'phone', 'zip']
data = [("email", "<object>"), ('zip', "<object>"), ('name', "<object>"), ('phone', "<object>")]

print sorted(data,key=lambda x:order.index(x[0]))
[('name', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
order=['name','email','phone','zip']
数据=[(“电子邮件”,“邮政编码”,“姓名”,“电话”,“电话])]
打印排序(数据,键=lambda x:order.index(x[0]))
[('name','')('email','')('phone','')('zip','')]
您还可以就地排序:

data.sort(key=lambda x:order.index(x[0]))
print data
[('name', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
data.sort(key=lambda x:order.index(x[0]))
打印数据
[('name','')('email','')('phone','')('zip','')]
如果您有重复的元素,这也会起作用:

data = [("email", "<object>"),("email", "<object>"), ('zip', "<object>"), ('name', "<object>"), ('phone', "<object>"),('name', "<object>")]
data.sort(key=lambda x:order.index(x[0]))
print data
[('name', '<object>'), ('name', '<object>'), ('email', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
data=[(“电子邮件”,“电子邮件”,“电子邮件”,“邮政编码”,“姓名”,“电话”,“姓名”,“姓名],(“姓名”)]
data.sort(key=lambda x:order.index(x[0]))
打印数据
[('name','')('name','')('email','')('email','')('phone','')('zip','')]

您只需根据数据元组的索引按顺序对其第一个元素进行排序:

order = ['name', 'email', 'phone', 'zip']
data = [("email", "<object>"), ('zip', "<object>"), ('name', "<object>"), ('phone', "<object>")]

print sorted(data,key=lambda x:order.index(x[0]))
[('name', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
order=['name','email','phone','zip']
数据=[(“电子邮件”,“邮政编码”,“姓名”,“电话”,“电话])]
打印排序(数据,键=lambda x:order.index(x[0]))
[('name','')('email','')('phone','')('zip','')]
您还可以就地排序:

data.sort(key=lambda x:order.index(x[0]))
print data
[('name', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
data.sort(key=lambda x:order.index(x[0]))
打印数据
[('name','')('email','')('phone','')('zip','')]
如果您有重复的元素,这也会起作用:

data = [("email", "<object>"),("email", "<object>"), ('zip', "<object>"), ('name', "<object>"), ('phone', "<object>"),('name', "<object>")]
data.sort(key=lambda x:order.index(x[0]))
print data
[('name', '<object>'), ('name', '<object>'), ('email', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
data=[(“电子邮件”,“电子邮件”,“电子邮件”,“邮政编码”,“姓名”,“电话”,“姓名”,“姓名],(“姓名”)]
data.sort(key=lambda x:order.index(x[0]))
打印数据
[('name','')('name','')('email','')('email','')('phone','')('zip','')]

您只需根据数据元组的索引按顺序对其第一个元素进行排序:

order = ['name', 'email', 'phone', 'zip']
data = [("email", "<object>"), ('zip', "<object>"), ('name', "<object>"), ('phone', "<object>")]

print sorted(data,key=lambda x:order.index(x[0]))
[('name', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
order=['name','email','phone','zip']
数据=[(“电子邮件”,“邮政编码”,“姓名”,“电话”,“电话])]
打印排序(数据,键=lambda x:order.index(x[0]))
[('name','')('email','')('phone','')('zip','')]
您还可以就地排序:

data.sort(key=lambda x:order.index(x[0]))
print data
[('name', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
data.sort(key=lambda x:order.index(x[0]))
打印数据
[('name','')('email','')('phone','')('zip','')]
如果您有重复的元素,这也会起作用:

data = [("email", "<object>"),("email", "<object>"), ('zip', "<object>"), ('name', "<object>"), ('phone', "<object>"),('name', "<object>")]
data.sort(key=lambda x:order.index(x[0]))
print data
[('name', '<object>'), ('name', '<object>'), ('email', '<object>'), ('email', '<object>'), ('phone', '<object>'), ('zip', '<object>')]
data=[(“电子邮件”,“电子邮件”,“电子邮件”,“邮政编码”,“姓名”,“电话”,“姓名”,“姓名],(“姓名”)]
data.sort(key=lambda x:order.index(x[0]))
打印数据
[('name','')('name','')('email','')('email','')('phone','')('zip','')]

index={item:order.index(item)for item in order}
作为建议
index={item:order.index(item)for item in order}
作为建议
index={item:order.index(item)for item in order}
作为建议许多好的解决方案,这表明我需要深入研究python并更好地理解它,而不是经常需要这样做。之所以选择这一行,是因为我最了解它,它只有一行。@percent,我还添加了一种对列表进行排序的方法。许多好的解决方案表明,我需要深入研究python并更好地理解它,通常不需要这样做。之所以选择这一行,是因为我最了解它,它只有一行。@percent,我还添加了一种对列表进行排序的方法。许多好的解决方案表明,我需要深入研究python并更好地理解它,通常不需要这样做。之所以选择这一行,是因为我最了解它,它只有一行。@percent,我还添加了一种对列表进行排序的方法。许多好的解决方案表明,我需要深入研究python并更好地理解它,通常不需要这样做。选择这一行是因为我最了解它,它只有一行。@percent,我还添加了一种对列表进行排序的方法。