Model::whereDate('column', '>', $this->freshTimestamp()->subDay())->get()
我试图将children = [1220, 1221, 2220, 2221, 2222, 3220, 3221, 4220, 4221, 5220]
child_list = []
child_inc = 1
for i in children:
digits = [str(x) for x in str(i)]
if int(digits[0]) == child_inc:
var = str("".join(digits))
child_list.append([var])
child_inc += 1
print(child_list)
分解为列表列表,首先将它们转换为字符串,然后读取第一个数字。如果第一个数字是1,则附加到列表,并将其存储在children
中。然后,对于以2开头的整数,将它们排序到child_list[0]
的另一个列表中,依此类推。
现在,此代码只能找到符合条件的第一个项目。最终输出是一个字符串并不重要。 感谢。
答案 0 :(得分:1)
你必须创建一个辅助列表,并进行嵌套循环,这样做:
children = [1220, 1221, 2220, 2221, 2222, 3220, 3221, 4220, 4221, 5220]
child_list = []
for i in range(1,6):
lst = []
for num in children:
digits = str(num)
if int(digits[0]) == i:
lst.append(digits)
child_list.append(lst)
print(child_list)
res => [['1220', '1221'], ['2220', '2221', '2222'], ['3220', '3221'], ['4220', '4221'], ['5220']]
答案 1 :(得分:0)
只需添加下一个代码段:
elif int(digits[0]) == 2:
var = str("".join(digits))
child_list2.append([var])
删除该行:
child_inc += 1
此行可防止找到符合条件的所有其他项目。
答案 2 :(得分:0)
您可以简化数字顶部的str
。
您似乎想要为每个起始数字建立一个列表。
在您需要的数字上运行child_inc
并检查您拥有的数字。
你在if中增加了这个,所以只得到匹配的第一个项目。
像这样:
children = [1220, 1221, 2220, 2221, 2222, 3220, 3221, 4220, 4221, 5220]
child_list = []
for child_inc in range(1,10):
kids = [] #<--- new list for this digit
for i in children:
digits = str(i)
if int(digits[0]) == child_inc:
var = str("".join(digits))
kids.append(var)
child_list.append(kids)
print(child_list)
答案 3 :(得分:0)
或许dict方法在这里更好:
children = [1220, 1221, 2220, 2221, 2222, 3220, 3221, 4220, 4221, 5220]
strs = [ str(x) for x in children]
res=defaultdict(list)
for s in strs :
res[s[0]].append(s[1:])
print(list(res.values()))
#[['220', '221'], ['220', '221', '222'], ['220', '221'], ['220', '221'], ['220']]
答案 4 :(得分:0)
让我们先了解实际问题:
示例提示:
假设你有一个清单:
a=[(2006,1),(2007,4),(2008,9),(2006,5)]
并且你希望将它转换为dict作为元组的第一个元素作为元组的键和第二个元素。类似的东西:
{2008: [9], 2006: [5], 2007: [4]}
但是有一个问题,你也想要那些具有不同值但键相同的键,如(2006,1)和(2006,5)键是相同的,但值是不同的。你希望那些值只附加一个键,所以预期输出:
{2008: [9], 2006: [1, 5], 2007: [4]}
对于这类问题,我们会这样做:
首先创建一个新的字典然后我们遵循这种模式:
if item[0] not in new_dict:
new_dict[item[0]]=[item[1]]
else:
new_dict[item[0]].append(item[1])
因此我们首先检查密钥是否在新的dict中,如果已经存在,则将duplicate key的值添加到其值中:
完整代码:
a=[(2006,1),(2007,4),(2008,9),(2006,5)]
new_dict={}
for item in a:
if item[0] not in new_dict:
new_dict[item[0]]=[item[1]]
else:
new_dict[item[0]].append(item[1])
print(new_dict)
现在回到实际问题:
您可以使用此模式并使用相同的第一个数字保存int:
children = [1220, 1221, 2220, 2221, 2222, 3220, 3221, 4220, 4221, 5220]
track={}
for i in children:
if str(i)[:1] not in track:
track[str(i)[:1]]=[i]
else:
track[str(i)[:1]].append(i)
print(track.values())
输出:
[[3220, 3221], [4220, 4221], [1220, 1221], [2220, 2221, 2222], [5220]]