如果我有一個以數字開頭且後跟一些文本的行文件,我怎麼能看到數字總是跟着不同的文本?例如:創建詞典並查看鍵是否總是具有相同的值
0 Brucella abortus Brucellaceae
0 Brucella ceti Brucellaceae
0 Brucella canis Brucellaceae
0 Brucella ceti Brucellaceae
所以在這裏,我想知道,0
後跟文本3種不同的「類型」。
理想的情況下,我可以讀文件到一個python腳本,將有輸出是這樣的:
1:250
2:98
3:78
4:65
etc.
的第一個號碼會後:
會有所不同「文本」的數量和次數發生這種情況有多少個數字。
我有下面的腳本,計算「文本」在不同的數字中找到了多少次,所以我想知道如何反轉它,所以我知道number
有多少次不同的文本,以及有多少不同的文本存在。該腳本將numbers
和「文本」的文件製作成字典,但我不確定如何操作此字典以獲得我想要的內容。
#!/usr/bin/env python
#Dictionary to broken species, genus, family
fileIn = 'usearchclusternumgenus.txt'
d = {}
with open(fileIn, "r") as f:
for line in f:
clu, gen, spec, fam = line.split()
d.setdefault(clu, []).append((spec))
# Iterate through and find out how many times each key occurs
vals = {} # A dictonary to store how often each value occurs.
for i in d.values():
for j in set(i): # Convert to a set to remove duplicates
vals[j] = 1 + vals.get(j,0) # If we've seen this value iterate the count
# Otherwise we get the default of 0 and iterate it
#print vals
# Iterate through each possible freqency and find how many values have that count.
counts = {} # A dictonary to store the final frequencies.
# We will iterate from 0 (which is a valid count) to the maximum count
for i in range(0,max(vals.values())+1):
# Find all values that have the current frequency, count them
#and add them to the frequency dictionary
counts[i] = len([x for x in vals.values() if x == i])
for key in sorted(counts.keys()):
if counts[key] > 0:
print key,":",counts[key]`
我可能誤會你在這裏計算的。我的回答簡化了您的代碼;按照'clu'計算有多少獨特的'spec'值。 –
這是一個很好的方式來說實際上我在找什麼。我正在尋找多少次(或多少'clu')具有獨特的'spec'。最終我想看看哪些,但首先我想知道它發生了多少次。 – Jen
儘管您的條款*文字*和*號碼*非常混亂。你能給我一小段樣本的輸入行和期望的輸出行嗎? –