Python:将两个列表成对比较,并根据成员资格和值创建一个新列表

2024-04-29 15:12:21 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我有一个清单:

list = [['Tuesday', 5], ['Friday', 2], ['Sunday', 3], ['Thursday', 1]]

我希望构建代码,找出Mon、Wed和Sat不在列表中,并将它们与0值相加。结果列表应按如下所示排序。因此,新的列表如下:

[[“星期一”,0],[“星期二”,5],[“星期三”,0],[“星期四”,1],[“星期五”,2],[“星期六”,0],[“星期日”,3]]

谢谢你的帮助!在


Tags: 代码列表排序satlistmonsundayfriday
3条回答

退房dict.update.更新. 如果您从一个将所有工作日映射为零的字典开始,然后用您读入的值进行更新,我认为它应该会产生您想要的结果:

fullweek = {'Monday':0, 'Tuesday': 0, 'Wednesday': 0, 'Thursday': 0, 'Friday': 0, 'Saturday': 0, 'Sunday': 0}
newdays = {'Tuesday':5, 'Friday':2, 'Sunday':3, 'Thursday':1}
fullweek.update(newdays)

当你想格式化结果时,排序就会发生,例如

^{pr2}$

可以使用默认值创建模板,并使用列表理解来构建数组的结果数组

#template with default values. Change the value from 0 to whatever if needed
template=[['Monday', 0], ['Tuesday', 0], ['Wednesday', 0], ['Thursday', 0], ['Friday', 0], ['Saturday', 0], ['Sunday', 0]]
#current data
data=[['Tuesday', 5], ['Friday', 2], ['Sunday', 3], ['Thursday', 1]]

#build a dictionary to make lookups easy
dictData=dict(data)

#use list comprehension to insert entries from data. If not in data use from template
result = [[x[0], dictData[x[0]]] if x[0] in dictData  else x for x in template]
print result

输出:

^{pr2}$

使用字典,尤其是^{}

>>> lst = [['Tuesday', 5], ['Friday', 2], ['Sunday', 3], ['Thursday', 1]]
>>> weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday',
                'Friday', 'Saturday', 'Sunday']
>>> d = dict(lst)
>>> [[wd, d.get(wd, 0)] for wd in weekdays]  # d.get(wd, 0) returns 0 for missing day
[['Monday', 0], ['Tuesday', 5], ['Wednesday', 0], ['Thursday', 1],
 ['Friday', 2], ['Saturday', 0], ['Sunday', 3]]

顺便说一句,使用list作为变量名不是一个好主意。它隐藏了内置类型/函数^{}。在

相关问题 更多 >