小编edg*_*edg的帖子

如何将字典中的键更改为大写,并在结果字典中添加相同键的值?

我有一个字典,看起来像这样:

d = {'A':110, 'a':100, 'T':50, 't':5}
Run Code Online (Sandbox Code Playgroud)

我想键更改为大写,并结合A+aT+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)

但首先我需要把钥匙拿到大写!

python

7
推荐指数
3
解决办法
1万
查看次数

如何从具有最高值的字典中删除密钥?

我有一个简单的问题(或者我认为).

我有一本字典,让我们说它看起来像这样:

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)

python

6
推荐指数
2
解决办法
2770
查看次数

从两个不同长度的列表中添加到字典中的值

我有四个列表,如下所示:

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是同步的,listblistbnum也.我想要一本字典,其中键都在项目listanum和值在项目listalistb,结果将是:

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)

但得到此错误消息: …

python list

4
推荐指数
2
解决办法
1421
查看次数

从两个同步列表中删除相同位置(索引)的项目?

我有两个清单:

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)

我很感激你的建议!

python

2
推荐指数
1
解决办法
476
查看次数

在两组同步列表中查找匹配项

我有两组同步的列表,如下所示:(通过同步我的意思是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)

任何想法如何解决这个问题?

python

1
推荐指数
1
解决办法
105
查看次数

迭代以数字开头的行

我有一个有很多行的文件,前四行以一些字母(一个单词)开头,其余的以数字开头.我想迭代以数字开头的行(三位数字,例如'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)

python

1
推荐指数
1
解决办法
93
查看次数

使用索引从两个列表中创建字典

我有两个清单:

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)

为什么它不会附加到字典中预先存在的字母而不是在它已经在字典中时添加到它?

python

1
推荐指数
1
解决办法
86
查看次数

计算同步列表中项目的组合(作为字典中的元组)

我有两个清单:

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)

但我得到这个错误:'元组索引超出范围'.问题是什么?首先制作元组可能效率不高吗?

python

0
推荐指数
1
解决办法
348
查看次数

如何循环字典并将密钥的名称写为输出文件的名称?

我想循环一个字典并为字典中的每个键创建一个输出文件,并使用该键作为输出文件的名称.这是我试过的:

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)

python

0
推荐指数
1
解决办法
49
查看次数

标签 统计

python ×9

list ×1