我有一本字典,我想附加到每种药物,一个数字列表。像这样:
append(0), append(1234), append(123), etc.
def make_drug_dictionary(data):
drug_dictionary={'MORPHINE':[],
'OXYCODONE':[],
'OXYMORPHONE':[],
'METHADONE':[],
'BUPRENORPHINE':[],
'HYDROMORPHONE':[],
'CODEINE':[],
'HYDROCODONE':[]}
prev = None
for row in data:
if prev is None or prev==row[11]:
drug_dictionary.append[row[11][]
return drug_dictionary
我后来希望能够访问entirr条目集,例如'MORPHINE'
。
答案 0 :(得分:58)
只需使用追加:
list1 = [1, 2, 3, 4, 5]
list2 = [123, 234, 456]
d = {'a': [], 'b': []}
d['a'].append(list1)
d['a'].append(list2)
print d['a']
答案 1 :(得分:15)
您应该使用append添加到列表中。但这里也有一些代码提示:
我会使用dict.setdefault
或defaultdict
来避免在字典定义中指定空列表。
如果您使用prev
过滤掉重复的值,则可以使用groupby
中的itertools
来简化代码
您修改后的代码如下:
import itertools
def make_drug_dictionary(data):
drug_dictionary = {}
for key, row in itertools.groupby(data, lambda x: x[11]):
drug_dictionary.setdefault(key,[]).append(row[?])
return drug_dictionary
如果您不知道groupby如何工作,请查看以下示例:
>>> list(key for key, val in itertools.groupby('aaabbccddeefaa'))
['a', 'b', 'c', 'd', 'e', 'f', 'a']
答案 2 :(得分:3)
听起来好像是在尝试将列表列表设置为字典中的每个值。 dict中每种药物的初始值为[]
。因此,假设您有要追加到'MORPHINE'
列表的list1,您应该这样做:
drug_dictionary['MORPHINE'].append(list1)
然后,您可以按照drug_dictionary['MORPHINE'][0]
等方式访问各种列表。
要遍历按密钥存储的列表,您可以执行以下操作:
for listx in drug_dictionary['MORPHINE'] :
do stuff on listx
答案 3 :(得分:3)
要在表格中添加条目:
for row in data:
name = ??? # figure out the name of the drug
number = ??? # figure out the number you want to append
drug_dictionary[name].append(number)
循环播放数据:
for name, numbers in drug_dictionary.items():
print name, numbers
答案 4 :(得分:1)
我如何在drug_dictionary中附加一个数字?
您是否希望添加“数字”或一组值?
我使用字典来构建关联数组和查找表。
因为python非常善于处理字符串, 我经常使用字符串并将值作为逗号分隔的字符串
添加到dict中drug_dictionary = {}
drug_dictionary={'MORPHINE':'',
'OXYCODONE':'',
'OXYMORPHONE':'',
'METHADONE':'',
'BUPRENORPHINE':'',
'HYDROMORPHONE':'',
'CODEINE':'',
'HYDROCODONE':''}
drug_to_update = 'MORPHINE'
try:
oldvalue = drug_dictionary[drug_to_update]
except:
oldvalue = ''
# to increment a value
try:
newval = int(oldval)
newval += 1
except:
newval = 1
drug_dictionary[drug_to_update] = "%s" % newval
# to append a value
try:
newval = int(oldval)
newval += 1
except:
newval = 1
drug_dictionary[drug_to_update] = "%s,%s" % (oldval,newval)
Append方法允许存储值列表,但会留下一个尾随逗号
可以使用
删除drug_dictionary[drug_to_update][:-1]
将值附加为字符串的结果意味着您可以根据需要附加值列表
print "'%s':'%s'" % ( drug_to_update, drug_dictionary[drug_to_update])
可以返回
'MORPHINE':'10,5,7,42,12,'
答案 5 :(得分:1)
vowels = ("a","e","i","o","u") #create a list of vowels
my_str = ("this is my dog and a cat") # sample string to get the vowel count
count = {}.fromkeys(vowels,0) #create dict initializing the count to each vowel to 0
for char in my_str :
if char in count:
count[char] += 1
print(count)
答案 6 :(得分:1)
如果要附加到字典中每个键的列表,则可以使用+
运算符(在Python 3.7中测试)将新值附加到它们:
mydict = {'a':[], 'b':[]}
print(mydict)
mydict['a'] += [1,3]
mydict['b'] += [4,6]
print(mydict)
mydict['a'] += [2,8]
print(mydict)
和输出:
{'a': [], 'b': []}
{'a': [1, 3], 'b': [4, 6]}
{'a': [1, 3, 2, 8], 'b': [4, 6]}
mydict['a'].extend([1,3])
将执行与+
相同的工作,而无需创建新列表(有效方式)。
答案 7 :(得分:0)
您也可以使用 update()
方法
d = {"a": 2}
d.update{"b": 4}
print(d) # {"a": 2, "b": 4}