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,我还添加了一种对列表进行排序的方法。