如何在不覆盖现有密钥的情况下将元组列表导入字典?

时间:2017-10-08 11:45:54

标签: python

我是python的新手,我的编码有问题。

我有一个大文本,这个文本中的每个单词都有一个标记(对于这些单词所属的女性词语)。

元组看起来像这样:

tuple1=[(bag, NN), (run, VB), (window, NN), (act, NN), (act,VB)]

如你所见,"行为"可以是动词和名词。因此,当我想将这个元组变成字典时,我想要两个{act:NN,act:VB}。如果不覆盖已有的密钥,我无法做到这一点。

这是我到目前为止所做的:

dicts={}
for i in tuple1:
    dicts[i[0]]=i[1]

ALSO: 如何将每个单词都写成小写字母或大字母? 因此,例如""之间没有区别。和""?

谢谢!

2 个答案:

答案 0 :(得分:2)

dicts = {}
for key, value in data:
    dicts.setdefault(key,[]).append(value)

返回:

{'bag': ['NN'], 'run': ['VB'], 'window': ['NN'], 'act': ['NN', 'VB']}

答案 1 :(得分:1)

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        //background color of text field
         UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).backgroundColor = .cyan

        }

经过测试:

dict1 = {} tuple1 = ((<word>, <type>), ...) for k, v in tuple1: if k in dict1 and v in dict1[k]: continue elif k not in dict1: dict1[k] = [v] elif v not in dict1[k]: dict1[k].append(v)

给出的输出是:

(('bag', 'noun'), ('run', 'verb'), ('run', 'noun'), ('act', 'noun'), ('act', 'verb'))

我的一般想法是,您可以简单地将一个键分配给包含其单词类型的列表,因此它不需要添加前缀为{'bag': ['noun'], 'run': ['verb', 'noun'], 'act': ['noun', 'verb']}或{{1}的其他键。等等。

在后一个问题上,要将单词(字符串)转换为大写或小写,只需调用verb_noun_变为str.lower(),将"Hello, world!"变为{{} 1}}进入"hello, world!"