假设我有一本字典,我想将其写入现有文件.如何在不丢失文件中可能存在的任何内容的情况下这样做?我在想的是做了以下事情:
def write_report(r, filename):
input_filename=open(filename, "a")
input_filename.close()
for (k,v) in r.items():
input_filename.write(k,v)
return filename
Run Code Online (Sandbox Code Playgroud)
我想确定的是文件名正确包含字典.
我希望能够交错两个可能长度不等的列表.我有的是:
def interleave(xs,ys):
a=xs
b=ys
c=a+b
c[::2]=a
c[1::2]=b
return c
Run Code Online (Sandbox Code Playgroud)
这适用于长度相等或只有+/- 1的列表.但是如果让我们说xs = [1,2,3]和ys = ["hi,"bye","no","yes","why"]这条消息出现:
c[::2]=a
ValueError: attempt to assign sequence of size 3 to extended slice of size 4
Run Code Online (Sandbox Code Playgroud)
如何使用索引修复此问题?或者我必须使用for循环?编辑:我想要的是让额外的值出现在最后.
我有这个代码,洗牌清单.我首先将它分成两个列表,因为我有一个交错函数,交错2个列表:
def shuffle(xs, n=1):
il=list()
if len(xs)%2==0:
stop=int(len(xs)//2)
a=xs[:stop]
b=xs[stop:]
print(a)
print(b)
else:
stop=int(len(xs)//2)
a=xs[:stop]
b=xs[stop:]
print(a)
print(b)
if n>0:
for i in range(n):
shuffle=interleave(a,b)
else:
return
return shuffle
Run Code Online (Sandbox Code Playgroud)
当我测试它时:
>>> shuffle([1,2,3,4,5,6,7],1)
[1, 2, 3]
[4, 5, 6, 7]
1
[7]
[7, 4]
[1, 4, 2, 5, 3, 6, 7, 4]
Run Code Online (Sandbox Code Playgroud)
列表中的4是两次,为什么打印1,[7],7,4] ??
编辑:
def interleave(xs,ys):
a=xs
b=ys
minlength=[len(a),len(b)]
extralist= list()
interleave= list()
for i in range((minval(minlength))):
pair=a[i],b[i]
interleave.append(pair)
flat=flatten(interleave)
c=a+b
if len(b)>len(a):
remainder=len(b)-len(a)
for j in range(remainder,-1,-1):
extra=b[-j]
extralist.append(extra) …Run Code Online (Sandbox Code Playgroud)