我有一个字典,看起来像这样:
d = {'A':110, 'a':100, 'T':50, 't':5}
Run Code Online (Sandbox Code Playgroud)
我想键更改为大写,并结合A+a和T+t并添加自己的价值观,使得所得到的字典是这样的:
d = {'A': 210, T: 55}
Run Code Online (Sandbox Code Playgroud)
这是我试过的:
for k, v in d.items():
k.upper(), v
Run Code Online (Sandbox Code Playgroud)
结果是:
('A', 110)
('A', 100)
('T', 50)
('t', 5)
Run Code Online (Sandbox Code Playgroud)
我看起来像元组,但我想在字典中更改它,所以我尝试编写一个函数:
def Upper(d):
for k, v in d.items:
k.upper(), v
return d
Run Code Online (Sandbox Code Playgroud)
但它返回字典不变.
在我将键更改为大写后,我找到了如何在字典中添加键值的解决方案:
dict([(x, a[x] + b[x]) if (x in a and x in b) else (x, a[x]) if (x in a) else (x, b[x])
Run Code Online (Sandbox Code Playgroud)
但首先我需要把钥匙拿到大写!
我有一个简单的问题(或者我认为).
我有一本字典,让我们说它看起来像这样:
dict = {'A':100, 'a':10, 'T':50, 't':5}
Run Code Online (Sandbox Code Playgroud)
我只想删除具有最高值的密钥.我试过这个:
del max(dict.values())
Run Code Online (Sandbox Code Playgroud)
这是错误消息:'语法错误:无法删除函数调用'.我希望最终结果是:
dict = {'a':10, 'T':50, 't':5}
Run Code Online (Sandbox Code Playgroud) 我有四个列表,如下所示:
lista = [['l', 'k'],['e', '3'],['c', 'k'],['x', 'i'],['d', 'f']]
listanum = [1,2,3,4,5]
listb = [['a', 'k'],['c', 'm'],['v', 'f']]
listbnum = [1,3,4]
Run Code Online (Sandbox Code Playgroud)
lista并且listanum是同步的,listb和listbnum也.我想要一本字典,其中键都在项目listanum和值在项目lista和listb,结果将是:
di = {1: [['l','k'],['a', 'k']],
2: [['e', '3'],[]],
3:[['c','k'],['c', 'm']],
4: [['x', 'i'],['v', 'f']],
5: [['d', 'f'][]]
}
Run Code Online (Sandbox Code Playgroud)
因此,如果listb中listanum中的数字没有值,则dictionarys值中的第二个列表为空.
我试过这个:
di = {}
for i in xrange(len(lista)):
pos = listanum[i]
if pos not in di:
di[pos] = [[],[]]
di[pos][0].append(lista[i])
if i in listbnum:
di[pos][1].append(listb[i])
Run Code Online (Sandbox Code Playgroud)
但得到此错误消息: …
我有两个清单:
l1 = ['#', '1', '#', '!']
l2 = ['S', 'T', 'K', 'M']
Run Code Online (Sandbox Code Playgroud)
如果在L1以"#"我想删除它,并消除任何是在L2相同的位置.这是我尝试过的(在其他几个方面):
for i in range(len(li[j])):
for k in range(len(l2[n])):
if j == "#":
li.remove([j][i])
l2.remove([n][k])
Run Code Online (Sandbox Code Playgroud)
但它抱怨j没有定义.我希望结果看起来像这样:
l1 = ['1', '!']
l2 = ['T', 'M']
Run Code Online (Sandbox Code Playgroud)
我很感激你的建议!
我有两组同步的列表,如下所示:(通过同步我的意思是cal中的'A'属于cpos中的12,而mal中的'A'属于mpos中的11)
设置1
cpos = [12, 13, 14, 15]
cal = ['A', 'T', 'C', 'G']
Run Code Online (Sandbox Code Playgroud)
SET2
mpos = [11, 12, 13, 16]
mal = ['A', 'T', 'T', 'G']
Run Code Online (Sandbox Code Playgroud)
我想找到两组之间的匹配,在这个例子中只有一个匹配,cpos和cal为13T,mpos&mal为13T.
我编写了这个脚本,但它只是通过索引来比较值,因为匹配字符串是空的:
mat = []
for i in xrange(len(cpos)):
if mpos[i] == cpos[i] and mal[i] == cal[i]:
mat.append(cpos[i])
Run Code Online (Sandbox Code Playgroud)
这就是我想得到的:
mat = [13]
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?
我有一个有很多行的文件,前四行以一些字母(一个单词)开头,其余的以数字开头.我想迭代以数字开头的行(三位数字,例如'123',后跟包含字母和数字的不同变量)并忽略前4行.这就是我所做的,但它在输出中给了我一个空白列表.
number = []
for line in infile.readline():
line = line.rstrip()
if line.startswith('[0-9]'):
number.append(line.split()[0])
print number
Run Code Online (Sandbox Code Playgroud)
为什么输出中的"数字"列表为空?
这就是infile的样子:
Value = 152
Numb = 0.005
Pos = 75
Samp = 12.5
150 K 0.345
234 T 0.764
565 X 0.345
Run Code Online (Sandbox Code Playgroud) 我有两个清单:
alist = [11,12,13,11,15]
blist = ['A', 'A', 'B', 'A', 'B']
Run Code Online (Sandbox Code Playgroud)
我想创建一个字典,其中blist中的项是键,而alist中的项是值,列表对应于两个列表中的索引:
结果应该是:
{'A': [11, 12, 11], 'B': [13, 15]}
Run Code Online (Sandbox Code Playgroud)
我试过这个:
dictNames = {}
for i in xrange(len(alist)):
for letter in blist:
if letter not in dictNames:
dictNames[letter] = []
else:
dictNames[letter].append(alist[i])
Run Code Online (Sandbox Code Playgroud)
结果如下:
{'A': [11, 11, 12, 12, 12, 13, 13, 13, 11, 11, 11, 15, 15, 15], 'B': [11, 12, 12, 13, 13, 11, 11, 15, 15]}
Run Code Online (Sandbox Code Playgroud)
为什么它不会附加到字典中预先存在的字母而不是在它已经在字典中时添加到它?
我有两个清单:
l1 = ['k', 'l', 'k', 's', 'l', 't', 'k']
l2 = ['h', 't', 'h', 't', 't', 's', 's']
Run Code Online (Sandbox Code Playgroud)
我想计算第一个列表中第i个位置的项目组合的出现次数与第二个列表中的相同位置.我希望结果如下:
kh = 2,lt = 2,st = 1,ts = 1,ks = 1
我认为最好先从列表中创建一个元组:
tupleList = zip(l1,l2)
tupeleList = [('k', 'h'), ('l', 't'), ('k', 'h'), ('s', 't'), ('l', 't'), ('t', 's'), ('k', 's')]
Run Code Online (Sandbox Code Playgroud)
然后创建一个字典来计算该元组列表中的唯一元素:
myDict = {}
for item in tupleList:
if item[1] in myDict:
myDi [ item[1] ] += item[2]
else
myDi [ item[1] ] = item[2]
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:'元组索引超出范围'.问题是什么?首先制作元组可能效率不高吗?
我想循环一个字典并为字典中的每个键创建一个输出文件,并使用该键作为输出文件的名称.这是我试过的:
for id, pos in PNposD.iteritems():
print id, 'id'
print pos, 'pos'
ofh = open("/home/",id,"_candMuts.txt")
ofh.write("%d\n" % (pos))
Run Code Online (Sandbox Code Playgroud)
这是我尝试打开输入文件的行的错误消息(在第4行):
TypeError: file() takes at most 3 arguments (4 given)
Run Code Online (Sandbox Code Playgroud)